Fix the real issue with AMS bootloader USB mode. A call to usb_enable was missing in usb.c when using the USB stack and USB_DETECT_BY_CORE was not enabled. Try to do it in a clean-ish way.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31245 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2011-12-14 09:19:50 +00:00
parent 7af94b4427
commit bfd69f2aa1
2 changed files with 15 additions and 8 deletions

View file

@ -63,10 +63,8 @@ static void usb_mode(void)
(LCD_HEIGHT - SYSFONT_HEIGHT) / 2, msg);
lcd_update();
usb_enable(true);
while(usb_detect() == USB_INSERTED)
sleep(HZ);
usb_enable(false);
reset_screen();
lcd_update();

View file

@ -135,6 +135,11 @@ static inline bool usb_do_screendump(void)
#ifdef HAVE_USBSTACK
/* Enable / disable USB when the stack is enabled - otherwise a noop */
static inline void usb_stack_enable(bool enable)
{
usb_enable(enable);
}
#ifdef HAVE_HOTSWAP
static inline void usb_handle_hotswap(long id)
@ -222,7 +227,6 @@ static inline void usb_slave_mode(bool on)
}
else /* usb_state == USB_INSERTED (only!) */
{
usb_enable(false);
#ifdef HAVE_PRIORITY_SCHEDULING
thread_set_priority(thread_self(), PRIORITY_SYSTEM);
#endif
@ -254,6 +258,11 @@ void usb_signal_transfer_completion(
#else /* !HAVE_USBSTACK */
static inline void usb_stack_enable(bool enable)
{
(void)enable;
}
#ifdef HAVE_HOTSWAP
static inline void usb_handle_hotswap(long id)
{
@ -403,6 +412,7 @@ static void usb_thread(void)
break;
usb_state = USB_POWERED;
usb_stack_enable(true);
#endif /* USB_DETECT_BY_CORE */
if(usb_power_button())
@ -467,20 +477,19 @@ static void usb_thread(void)
break;
usb_state = USB_POWERED;
usb_enable(true);
usb_stack_enable(true);
break;
/* USB_POWERED: */
case USB_UNPOWERED:
if(usb_state == USB_POWERED)
usb_enable(false);
/* Fall-through - other legal states can be USB_INSERTED or
USB_SCREENDUMP */
#endif /* USB_DETECT_BY_CORE */
case USB_EXTRACTED:
if(usb_state == USB_EXTRACTED)
break;
if(usb_state == USB_POWERED || usb_state == USB_INSERTED)
usb_stack_enable(false);
/* Only disable the USB slave mode if we really have enabled
it. Some expected acks may not have been received. */
if(usb_state == USB_INSERTED)