Trigger a wakeup after USB Reset on ChibiOS. (#12831)
After a USB Reset event the device must, according to the spec wake up from any suspend state, so the Configured event that arrives afterwards should be interpreted as an implicit wakeup.
This commit is contained in:
		
							parent
							
								
									1409b36851
								
							
						
					
					
						commit
						982b782ce3
					
				
					 1 changed files with 7 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -415,14 +415,18 @@ static inline void usb_event_wakeup_handler(void) {
 | 
			
		|||
#endif /* SLEEP_LED_ENABLE */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool last_suspend_state = false;
 | 
			
		||||
 | 
			
		||||
void usb_event_queue_task(void) {
 | 
			
		||||
    usbevent_t event;
 | 
			
		||||
    while (usb_event_queue_dequeue(&event)) {
 | 
			
		||||
        switch (event) {
 | 
			
		||||
            case USB_EVENT_SUSPEND:
 | 
			
		||||
                last_suspend_state = true;
 | 
			
		||||
                usb_event_suspend_handler();
 | 
			
		||||
                break;
 | 
			
		||||
            case USB_EVENT_WAKEUP:
 | 
			
		||||
                last_suspend_state = false;
 | 
			
		||||
                usb_event_wakeup_handler();
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
| 
						 | 
				
			
			@ -464,6 +468,9 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
 | 
			
		|||
                qmkusbConfigureHookI(&drivers.array[i].driver);
 | 
			
		||||
            }
 | 
			
		||||
            osalSysUnlockFromISR();
 | 
			
		||||
            if (last_suspend_state) {
 | 
			
		||||
                usb_event_queue_enqueue(USB_EVENT_WAKEUP);
 | 
			
		||||
            }
 | 
			
		||||
            return;
 | 
			
		||||
        case USB_EVENT_SUSPEND:
 | 
			
		||||
            usb_event_queue_enqueue(USB_EVENT_SUSPEND);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue