summaryrefslogtreecommitdiff
path: root/firmware/usb.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2009-02-28 15:16:54 +0000
committerFrank Gevaerts <frank@gevaerts.be>2009-02-28 15:16:54 +0000
commitafedfcf44ed004ddd73e613798fae16d9ebc7443 (patch)
tree48b9b17db079827307eab14f39ac98fc5835fc0d /firmware/usb.c
parentb6a1af2a9b8d54ed8e94e2a36f5564cf3f239919 (diff)
downloadrockbox-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.c21
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)
{