Commit Graph

18 Commits

Author SHA1 Message Date
a1346054
9660eead4e
Simple maintenance improvements (#145)
* Fix typos

* Add missing final newline

* Trim trailing whitespace
2022-08-15 17:51:48 +02:00
martinwhitaker
e6e0f0c8e7
USB improvements (#116)
* Add new heap manager.

* Convert OHCI driver to use new heap manager.

* Convert UHCI driver to use new heap manager.

* Convert EHCI driver to use new heap manager.

* Convert XHCI driver to use new heap manager.

* Convert SMP to use new heap manager.

* Add a "usbinit" boot option to handle various buggy USB devices.

This replaces the "keyboard=buggy-usb" option, and adds a second
workaround to handle the problem seen in issue #107.
2022-07-16 13:34:08 +02:00
Martin Whitaker
eaf29f1e39 Mark keyboard reports passed to process_usb_keyboard_report() as const. 2022-05-01 22:43:04 +01:00
Martin Whitaker
260c113bb2 Detect and ignore the HID keyboard "phantom condition" (excessive roll-over). 2022-05-01 22:40:42 +01:00
Martin Whitaker
c3bdb556d1 Move probe_usb_controller() into private functions section of usbhcd.c
No functional change. It was just in the wrong place.
2022-05-01 18:24:39 +01:00
Martin Whitaker
97d6c7140d Improved USB keyboard report handling.
A USB keyboard may return key codes in any of the 6 key code array
positions (issue #48). So we have to compare the latest report to
the previous one to detect new key presses and handle rollover. As
the same change is needed for all HCI types, factor out the common
code into the base driver.
2022-05-01 16:44:46 +01:00
Martin Whitaker
8284e98761 Don't disable bus master capability when probing USB PCI configuration.
That can cause the SMM to freeze the system when legacy support is
enabled on some AMD XHCI controllers (issue #56).
2022-04-30 11:30:00 +01:00
Martin Whitaker
644a13c730 Add usbdebug command line option and conditionally pause at end of USB scan.
If the usbdebug option is present, pause at the end of the USB scan until
a key is pressed. Otherwise, if the keyboard=usb option is present and no
USB keyboards were discovered, pause for 10 seconds. Otherwise don't pause.
2022-04-17 22:46:17 +01:00
Martin Whitaker
4c55182cd0 Disable UHCI legacy support and make sure all UHCI registers are initialised.
The controller reset should set the USBINTR, FRNUM, and SOF registers to
their default values, but set them explicitly just to be sure.
2022-04-09 22:42:59 +01:00
Martin Whitaker
4761b782dd Enable detection of keyboards attached to a UHCI controller. 2022-04-07 18:05:45 +01:00
Martin Whitaker
2c33aa3e85 Check for correct address space in probe_usb_controller() (issue #36).
We expect UHCI controllers to be mapped into I/O space and the other
controller types to be mapped into Memory space. Print a diagnostic
message and abort if this is not the case. Only call map_region()
for controllers mapped into Memory space.
2022-04-06 20:46:08 +01:00
Martin Whitaker
711596edbb Add boot command line option to ignore any EHCI controllers. 2022-04-04 22:53:39 +01:00
Martin Whitaker
5211b67e6c Add option to map_region to indicate we only use the region during startup.
This will avoid unnecessary remapping of the ACPI tables if they are
located in the third GB of memory.
2022-02-28 22:05:21 +00:00
Martin Whitaker
a65d6a795d Rename map_device to map_region to better describe its use. 2022-02-28 22:05:21 +00:00
Martin Whitaker
f109a5814b Implement EHCI handover to companion controllers.
Low/full speed USB devices attached directly to the root hub must be
rerouted to a companion controller. We can't rely on the BIOS to do
this for us. This requires us to initialise the EHCI device before
initialising any of its companions.

This also allows us to support keyboards attached via a high speed
hub on a system with EHCI plus companions.
2022-02-20 20:21:16 +00:00
Martin Whitaker
563c8a1ee7 Add support for EHCI USB controller. 2022-01-23 17:38:50 +00:00
Martin Whitaker
5b56d76e03 Minor fixes and refactoring in preparation for EHCI support. 2022-01-23 17:34:08 +00:00
Martin Whitaker
4400ec6f17 Rename usbkbd to usbhcd to better reflect the new design. 2022-01-08 23:14:50 +00:00