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/usb.c | |
| 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/usb.c')
| -rw-r--r-- | firmware/usb.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/firmware/usb.c b/firmware/usb.c index 2ac56a9..fa7eef4 100644 --- a/firmware/usb.c +++ b/firmware/usb.c @@ -361,14 +361,9 @@ static void usb_thread(void) break; } - exclusive_storage_access = false; #endif /* HAVE_USBSTACK */ + num_acks_to_expect = usb_release_exclusive_storage(); - /* Tell all threads that we are back in business */ - num_acks_to_expect = - queue_broadcast(SYS_USB_DISCONNECTED, 0) - 1; - DEBUGF("USB extracted. Waiting for ack from %d threads...\n", - num_acks_to_expect); break; case SYS_USB_DISCONNECTED_ACK: @@ -657,6 +652,20 @@ bool usb_exclusive_storage(void) } #endif +int usb_release_exclusive_storage(void) +{ + int num_acks_to_expect; +#ifdef HAVE_USBSTACK + exclusive_storage_access = false; +#endif /* HAVE_USBSTACK */ + /* Tell all threads that we are back in business */ + num_acks_to_expect = + queue_broadcast(SYS_USB_DISCONNECTED, 0) - 1; + DEBUGF("USB extracted. Waiting for ack from %d threads...\n", + num_acks_to_expect); + return num_acks_to_expect; +} + #ifdef HAVE_USB_POWER bool usb_powered(void) { |