Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
USB devices not working on systems with legacy BIOS
2017-02-14, 14:18
Post: #3
RE: USB devices not working on systems with legacy BIOS
(2017-02-14 12:57)NiKiZe Wrote:  for reference this relates to the discussion at http://forum.ipxe.org/showthread.php?tid...0#pid13480

In BIOS mode AFAIK there is no call that can be made to get original drivers to re-enumerate the bus.

So this is not an issue of releasing the USB controller, but rather that BIOS can not reclaim the controller regardless of what iPXE does or not.

Please take a look at an Intel document tittled Enhanced Host Controller Interface Specification for Universal Serial Bus.

As per the specification all EHCI host controllers have a register used to identify extended capabilities. One of those "extended capabilities" is a synchronization mechanism used to handoff ownership of the USB host controller from BIOS to the operating system.

If the Pre-OS to OS handoff synchronization capability is available, the OS (or iPXE in this case) is also able to handoff ownership of the USB host controller back to BIOS. If iPXE writes clears bit 24 at USBLEGSUP register, the USB host controller will issue an SMI that will be catched by the BIOS code. At that time the BIOS will know that it can regain ownership of the USB host controller hardware.

Taking a look at EHCI source code in iPXE, you can see that there is a function called ehci_remove that calls another funcion called ehci_legacy_release. The comments in the source for ehci_legacy_release read as "Release ownership back to BIOS." and its code writes 0 at USBLEGSUP register if iPXE detected that Pre-OS to OS handoff synchronization mechanism is available.

Eugenio
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: USB devices not working on systems with legacy BIOS - eugenio - 2017-02-14 14:18



User(s) browsing this thread: 1 Guest(s)