| USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; | USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; | ||||
| stat &= ~USBHS_USBSTS_TI0; | stat &= ~USBHS_USBSTS_TI0; | ||||
| } | } | ||||
| // TODO: should ENHOSTDISCONDETECT be set? K66 ref, page 1701 | |||||
| } else { | } else { | ||||
| Serial.println(" disconnect"); | Serial.println(" disconnect"); | ||||
| port_state = PORT_STATE_DISCONNECTED; | port_state = PORT_STATE_DISCONNECTED; | ||||
| USBPHY_CTRL_CLR = USBPHY_CTRL_ENHOSTDISCONDETECT; | |||||
| // TODO: delete & clean up device state... | // TODO: delete & clean up device state... | ||||
| } | } | ||||
| } | } | ||||
| // 10 ms reset recover (USB 2.0: TRSTRCY, page 151 & 188) | // 10 ms reset recover (USB 2.0: TRSTRCY, page 151 & 188) | ||||
| USBHS_GPTIMER0LD = 10000; // microseconds | USBHS_GPTIMER0LD = 10000; // microseconds | ||||
| USBHS_GPTIMER0CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; | USBHS_GPTIMER0CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; | ||||
| if (USBHS_PORTSC1 & USBHS_PORTSC_HSP) { | |||||
| // turn on high-speed disconnect detector | |||||
| USBPHY_CTRL_SET = USBPHY_CTRL_ENHOSTDISCONDETECT; | |||||
| } | |||||
| } | } | ||||
| if (portstat & USBHS_PORTSC_FPR) { | if (portstat & USBHS_PORTSC_FPR) { | ||||
| Serial.println(" force resume"); | Serial.println(" force resume"); |