- Joined
- Feb 26, 2011
- Messages
- 47
- Motherboard
- Gigabyte Z87-UD3H
- CPU
- i7 4770k
- Graphics
- GTX 1060
- Mac
- Mobile Phone
I managed to get things working with the two kexts, the clover patched and dsdt patching does not have any effect.
Unfortunately I'm still experiencing occasional USB weirdness even after applying all the usual fixes. USB devices will not be recognized on insertion, will stick after ejection, be recognized as USB2 while being USB3 etc. I posted my config etc in Forums/Post Installation/General Help on May,1 asking for help but got no replies. Rehabman? VoiletDragon? Could you have a look?
Main culprits are my front USB ports, HS/SS07 and HS/SS08.
Yes it seems you are right. I stuck a bluetooth dongle on one of the internal USB 2 headers on an MSI H81i and it does indeed come under the XHC. The Gigabyte H81 board i was using has an option in the firmware settings to route or not the USB 2 to XHC but i never used the headers.Incorrect. Series 8, 9 and 100 has no USB 2 it is routed through XHCI Controller.
/* Route all ports to XHCI controller */
void usb_xhci_route_all(void)
{
u32 port_mask, route;
u16 reg16;
/* Skip if EHCI is already disabled */
if (RCBA32(FD) & PCH_DISABLE_EHCI1)
return;
/* Set D0 state */
reg16 = pci_read_config16(PCH_XHCI_DEV, XHCI_PWR_CTL_STS);
reg16 &= ~PWR_CTL_SET_MASK;
reg16 |= PWR_CTL_SET_D0;
pci_write_config16(PCH_XHCI_DEV, XHCI_PWR_CTL_STS, reg16);
/* Set USB3 superspeed enable */
port_mask = pci_read_config32(PCH_XHCI_DEV, XHCI_USB3PRM);
route = pci_read_config32(PCH_XHCI_DEV, XHCI_USB3PR);
route &= ~XHCI_USB3PR_SSEN;
route |= XHCI_USB3PR_SSEN & port_mask;
pci_write_config32(PCH_XHCI_DEV, XHCI_USB3PR, route);
/* Route USB2 ports to XHCI controller */
port_mask = pci_read_config32(PCH_XHCI_DEV, XHCI_USB2PRM);
route = pci_read_config32(PCH_XHCI_DEV, XHCI_USB2PR);
route &= ~XHCI_USB2PR_HCSEL;
route |= XHCI_USB2PR_HCSEL & port_mask;
pci_write_config32(PCH_XHCI_DEV, XHCI_USB2PR, route);
/* Disable EHCI controller */
usb_ehci_disable(PCH_EHCI1_DEV);
/* LynxPoint-H has a second EHCI controller */
if (!pch_is_lp())
usb_ehci_disable(PCH_EHCI2_DEV);
/* Reset and clear port change status */
usb_xhci_reset_usb3(PCH_XHCI_DEV, 1);
}
Yes it seems you are right. I stuck a bluetooth dongle on one of the internal USB 2 headers on an MSI H81i and it does indeed come under the XHC. The Gigabyte H81 board i was using has an option in the firmware settings to route or not the USB 2 to XHC but i never used the headers.
Whether or not the EHCI gets used looks firmware controlled.
There is this in coreboot.
Code:/* Route all ports to XHCI controller */ void usb_xhci_route_all(void) { u32 port_mask, route; u16 reg16; /* Skip if EHCI is already disabled */ if (RCBA32(FD) & PCH_DISABLE_EHCI1) return; /* Set D0 state */ reg16 = pci_read_config16(PCH_XHCI_DEV, XHCI_PWR_CTL_STS); reg16 &= ~PWR_CTL_SET_MASK; reg16 |= PWR_CTL_SET_D0; pci_write_config16(PCH_XHCI_DEV, XHCI_PWR_CTL_STS, reg16); /* Set USB3 superspeed enable */ port_mask = pci_read_config32(PCH_XHCI_DEV, XHCI_USB3PRM); route = pci_read_config32(PCH_XHCI_DEV, XHCI_USB3PR); route &= ~XHCI_USB3PR_SSEN; route |= XHCI_USB3PR_SSEN & port_mask; pci_write_config32(PCH_XHCI_DEV, XHCI_USB3PR, route); /* Route USB2 ports to XHCI controller */ port_mask = pci_read_config32(PCH_XHCI_DEV, XHCI_USB2PRM); route = pci_read_config32(PCH_XHCI_DEV, XHCI_USB2PR); route &= ~XHCI_USB2PR_HCSEL; route |= XHCI_USB2PR_HCSEL & port_mask; pci_write_config32(PCH_XHCI_DEV, XHCI_USB2PR, route); /* Disable EHCI controller */ usb_ehci_disable(PCH_EHCI1_DEV); /* LynxPoint-H has a second EHCI controller */ if (!pch_is_lp()) usb_ehci_disable(PCH_EHCI2_DEV); /* Reset and clear port change status */ usb_xhci_reset_usb3(PCH_XHCI_DEV, 1); }
Yes it seems you are right.