diff options
| author | Frank Gevaerts <frank@gevaerts.be> | 2009-02-28 15:16:54 +0000 |
|---|---|---|
| committer | Frank Gevaerts <frank@gevaerts.be> | 2009-02-28 15:16:54 +0000 |
| commit | afedfcf44ed004ddd73e613798fae16d9ebc7443 (patch) | |
| tree | 48b9b17db079827307eab14f39ac98fc5835fc0d /firmware/usbstack | |
| parent | b6a1af2a9b8d54ed8e94e2a36f5564cf3f239919 (diff) | |
| download | rockbox-afedfcf44ed004ddd73e613798fae16d9ebc7443.zip rockbox-afedfcf44ed004ddd73e613798fae16d9ebc7443.tar.gz rockbox-afedfcf44ed004ddd73e613798fae16d9ebc7443.tar.bz2 rockbox-afedfcf44ed004ddd73e613798fae16d9ebc7443.tar.xz | |
Leave "usb mode" when all LUNs are ejected again
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20139 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack')
| -rw-r--r-- | firmware/usbstack/usb_storage.c | 30 | ||||
| -rw-r--r-- | firmware/usbstack/usb_storage.h | 2 |
2 files changed, 8 insertions, 24 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index e769216..ed9efd6 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c @@ -302,7 +302,6 @@ static bool check_disk_present(IF_MV_NONVOID(int volume)) #endif } -#if 0 static void try_release_ata(void) { /* Check if there is a connected drive left. If not, @@ -317,10 +316,9 @@ static void try_release_ata(void) } if(canrelease) { logf("scsi release ata"); - usb_release_exclusive_ata(); + usb_release_exclusive_storage(); } } -#endif #ifdef HAVE_HOTSWAP void usb_storage_notify_hotswap(int volume,bool inserted) @@ -331,28 +329,14 @@ void usb_storage_notify_hotswap(int volume,bool inserted) } else { ejected[volume] = true; + try_release_ata(); } } #endif -void usb_storage_reconnect(void) -{ - int i; - if(usb_core_driver_enabled(USB_DRIVER_MASS_STORAGE) - && usb_inserted()) { - for(i=0;i<NUM_VOLUMES;i++) - ejected[i] = !check_disk_present(IF_MV(i)); - logf("%s", __func__); - } -} - /* called by usb_core_init() */ void usb_storage_init(void) { - int i; - for(i=0;i<NUM_VOLUMES;i++) { - ejected[i] = !check_disk_present(IF_MV(i)); - } logf("usb_storage_init done"); } @@ -431,10 +415,10 @@ void usb_storage_init_connection(void) #endif usb_drv_recv(ep_out, tb.transfer_buffer, 1024); - int lun; - for(lun=0;lun<NUM_VOLUMES;lun++) - { - queue_broadcast(SYS_USB_LUN_LOCKED, (lun<<16)+0); + int i; + for(i=0;i<NUM_VOLUMES;i++) { + ejected[i] = !check_disk_present(IF_MV(i)); + queue_broadcast(SYS_USB_LUN_LOCKED, (i<<16)+0); } } @@ -691,6 +675,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) #ifdef HAVE_HOTSWAP if(storage_removable(lun) && !storage_present(lun)) { ejected[lun] = true; + try_release_ata(); } #endif @@ -893,6 +878,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) { logf("scsi eject"); ejected[lun]=true; + try_release_ata(); } } } diff --git a/firmware/usbstack/usb_storage.h b/firmware/usbstack/usb_storage.h index 8344419..c76cb89 100644 --- a/firmware/usbstack/usb_storage.h +++ b/firmware/usbstack/usb_storage.h @@ -35,7 +35,5 @@ bool usb_storage_control_request(struct usb_ctrlrequest* req); void usb_storage_notify_hotswap(int volume,bool inserted); #endif -void usb_storage_reconnect(void); - #endif |