From 2f4b88e9bb157a81cd57b31f8f22dbecc49f368a Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Tue, 23 Jul 2002 15:02:25 +0000 Subject: Possibly better USB handling git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1419 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata.c | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) (limited to 'firmware/drivers/ata.c') diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 3fdc93669e..6cab3d3872 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -125,7 +125,6 @@ int ata_read_sectors(unsigned long start, if ( sleeping ) { if (ata_soft_reset()) { - mutex_unlock(&ata_mtx); return -1; } } @@ -184,7 +183,6 @@ int ata_write_sectors(unsigned long start, if ( sleeping ) { if (ata_soft_reset()) { - mutex_unlock(&ata_mtx); return -1; } } @@ -307,14 +305,14 @@ static void ata_thread(void) while (1) { queue_wait(&ata_queue, &ev); switch ( ev.id ) { - case SYS_USB_CONNECTED: - /* Tell the USB thread that we are safe */ - DEBUGF("backlight_thread got SYS_USB_CONNECTED\n"); - usb_acknowledge(SYS_USB_CONNECTED_ACK); + case SYS_USB_CONNECTED: + /* Tell the USB thread that we are safe */ + DEBUGF("backlight_thread got SYS_USB_CONNECTED\n"); + usb_acknowledge(SYS_USB_CONNECTED_ACK); - /* Wait until the USB cable is extracted again */ - usb_wait_for_disconnect(&ata_queue); - break; + /* Wait until the USB cable is extracted again */ + usb_wait_for_disconnect(&ata_queue); + break; case Q_SLEEP: ata_perform_sleep(); @@ -372,7 +370,7 @@ int ata_soft_reset(void) retry_count = 8; do { - ret = wait_for_rdy(); + ret = wait_for_rdy(); } while(!ret && retry_count--); /* Massage the return code so it is 0 on success and -1 on failure */ @@ -447,9 +445,9 @@ static int io_address_detect(void) void ata_enable(bool on) { if(on) - PADR &= ~0x80; /* enable ATA */ + PADR &= ~0x80; /* enable ATA */ else - PADR |= 0x80; /* disable ATA */ + PADR |= 0x80; /* disable ATA */ PAIOR |= 0x80; } @@ -462,19 +460,19 @@ int ata_init(void) ata_enable(true); - if (master_slave_detect()) - return -1; - - if (io_address_detect()) - return -2; - - if (check_registers()) - return -3; - - if (freeze_lock()) - return -4; - if ( !initialized ) { + if (master_slave_detect()) + return -1; + + if (io_address_detect()) + return -2; + + if (check_registers()) + return -3; + + if (freeze_lock()) + return -4; + queue_init(&ata_queue); create_thread(ata_thread, ata_stack, sizeof(ata_stack), ata_thread_name); -- cgit v1.2.3