diff options
Diffstat (limited to 'firmware/usb.c')
-rw-r--r-- | firmware/usb.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/firmware/usb.c b/firmware/usb.c index c8f0118730..ca0e86b478 100644 --- a/firmware/usb.c +++ b/firmware/usb.c | |||
@@ -136,7 +136,7 @@ static inline void usb_slave_mode(bool on) | |||
136 | } | 136 | } |
137 | else /* usb_state == USB_INSERTED (only!) */ | 137 | else /* usb_state == USB_INSERTED (only!) */ |
138 | { | 138 | { |
139 | #ifndef USB_DETECT_BY_DRV | 139 | #if !defined(USB_DETECT_BY_DRV) && !defined(USB_DETECT_BY_CORE) |
140 | usb_enable(false); | 140 | usb_enable(false); |
141 | #endif | 141 | #endif |
142 | #ifdef HAVE_PRIORITY_SCHEDULING | 142 | #ifdef HAVE_PRIORITY_SCHEDULING |
@@ -244,7 +244,7 @@ static void usb_thread(void) | |||
244 | (struct usb_transfer_completion_event_data*)ev.data); | 244 | (struct usb_transfer_completion_event_data*)ev.data); |
245 | break; | 245 | break; |
246 | #endif | 246 | #endif |
247 | #ifdef USB_DETECT_BY_DRV | 247 | #if defined(USB_DETECT_BY_DRV) || defined(USB_DETECT_BY_CORE) |
248 | /* In this case, these events the handle cable insertion USB | 248 | /* In this case, these events the handle cable insertion USB |
249 | * driver determines INSERTED/EXTRACTED state. */ | 249 | * driver determines INSERTED/EXTRACTED state. */ |
250 | case USB_POWERED: | 250 | case USB_POWERED: |
@@ -263,7 +263,7 @@ static void usb_thread(void) | |||
263 | * available. */ | 263 | * available. */ |
264 | queue_post(&usb_queue, USB_EXTRACTED, 0); | 264 | queue_post(&usb_queue, USB_EXTRACTED, 0); |
265 | break; | 265 | break; |
266 | #endif /* USB_DETECT_BY_DRV */ | 266 | #endif /* USB_DETECT_BY_DRV || USB_DETECT_BY_CORE */ |
267 | case USB_INSERTED: | 267 | case USB_INSERTED: |
268 | #ifdef HAVE_LCD_BITMAP | 268 | #ifdef HAVE_LCD_BITMAP |
269 | if(do_screendump_instead_of_usb) | 269 | if(do_screendump_instead_of_usb) |
@@ -379,7 +379,8 @@ static void usb_thread(void) | |||
379 | #ifdef HAVE_USBSTACK | 379 | #ifdef HAVE_USBSTACK |
380 | if(!exclusive_storage_access) | 380 | if(!exclusive_storage_access) |
381 | { | 381 | { |
382 | #ifndef USB_DETECT_BY_DRV /* Disabled handling USB_UNPOWERED */ | 382 | #if !defined(USB_DETECT_BY_DRV) && !defined(USB_DETECT_BY_CORE) |
383 | /* Disabled handling USB_UNPOWERED */ | ||
383 | usb_enable(false); | 384 | usb_enable(false); |
384 | #endif | 385 | #endif |
385 | break; | 386 | break; |
@@ -457,7 +458,8 @@ void usb_status_event(int current_status) | |||
457 | { | 458 | { |
458 | /* Caller isn't expected to filter for changes in status. | 459 | /* Caller isn't expected to filter for changes in status. |
459 | * current_status: | 460 | * current_status: |
460 | * USB_DETECT_BY_DRV: USB_POWERED, USB_UNPOWERED, USB_INSERTED (driver) | 461 | * USB_DETECT_BY_DRV/CORE: USB_POWERED, USB_UNPOWERED, |
462 | USB_INSERTED (driver/core) | ||
461 | * else: USB_INSERTED, USB_EXTRACTED | 463 | * else: USB_INSERTED, USB_EXTRACTED |
462 | */ | 464 | */ |
463 | if(usb_monitor_enabled) | 465 | if(usb_monitor_enabled) |
@@ -481,7 +483,10 @@ void usb_start_monitoring(void) | |||
481 | 483 | ||
482 | usb_monitor_enabled = true; | 484 | usb_monitor_enabled = true; |
483 | 485 | ||
484 | #ifdef USB_DETECT_BY_DRV | 486 | #ifdef USB_STATUS_BY_EVENT |
487 | /* Filter the status - an event may have been missed because it was | ||
488 | * sent before monitoring was enabled due to the connector already | ||
489 | * having been inserted before before or during boot. */ | ||
485 | status = (status == USB_INSERTED) ? USB_POWERED : USB_UNPOWERED; | 490 | status = (status == USB_INSERTED) ? USB_POWERED : USB_UNPOWERED; |
486 | #endif | 491 | #endif |
487 | usb_status_event(status); | 492 | usb_status_event(status); |
@@ -577,7 +582,7 @@ void usb_init(void) | |||
577 | { | 582 | { |
578 | /* We assume that the USB cable is extracted */ | 583 | /* We assume that the USB cable is extracted */ |
579 | usb_state = USB_EXTRACTED; | 584 | usb_state = USB_EXTRACTED; |
580 | #ifdef USB_DETECT_BY_DRV | 585 | #if defined(USB_DETECT_BY_DRV) || defined(USB_DETECT_BY_CORE) |
581 | last_usb_status = USB_UNPOWERED; | 586 | last_usb_status = USB_UNPOWERED; |
582 | #else | 587 | #else |
583 | last_usb_status = USB_EXTRACTED; | 588 | last_usb_status = USB_EXTRACTED; |