A bug was reported that prevented keyboards from being recognized when connected to a Raspberry Pi A+. On investigation a number of issues were identified when USB devices are directly connected to the DWCOTG host controller port as is the case with the Raspberry Pi A, A+ and Zero.
Brief details of changes:
- Fix incorrect status change reporting when USB devices are disconnected from the DWCOTG root hub.
- Fix handling of full speed or low speed USB devices (like keyboards and mice) when connected to the DWCOTG root hub.
- Add USB request cancel and timeout functionality to USB core and DWCOTG host driver.
- Change USB hub, keyboard and mouse drivers to cancel outstanding requests when the device is disconnected.
- Add adjustment of host frame interval parameters for the DWCOTG driver, in testing this can provide up to 30% to 50% performance improvement for USB requests.
- Rewrite USB hub driver thread and completion functions to correctly complete outstanding requests when a hub is disconnected.
Please note that the original issue did not apply to Raspberry Pi B, B+, 2B or 3B as these have a USB hub hardwired into the board, however some of the above changes also improve USB handling for these boards.
For details of how to apply the latest source to your Ultibo core installation and rebuild your run time library see the wiki page Building from Source.