Index: ehci_pci.c =================================================================== RCS file: /cvsroot/src/sys/dev/pci/ehci_pci.c,v retrieving revision 1.56 diff -u -r1.56 ehci_pci.c --- ehci_pci.c 20 Jul 2012 01:26:19 -0000 1.56 +++ ehci_pci.c 22 Sep 2012 00:22:17 -0000 @@ -91,7 +91,7 @@ enum ehci_pci_quirk_flags ehci_pci_lookup_quirkdata(pci_vendor_id_t, pci_product_id_t); -#define EHCI_MAX_BIOS_WAIT 100 /* ms*10 */ +#define EHCI_MAX_BIOS_WAIT 1000 /* ms */ #define EHCI_SBx00_WORKAROUND_REG 0x50 #define EHCI_SBx00_WORKAROUND_ENABLE __BIT(27) @@ -393,18 +393,16 @@ if (EHCI_CAP_GET_ID(cap) != EHCI_CAP_ID_LEGACY) goto next; legsup = pci_conf_read(pc, tag, addr + PCI_EHCI_USBLEGSUP); + /* Ask BIOS to give up ownership */ + pci_conf_write(pc, tag, addr + PCI_EHCI_USBLEGSUP, + legsup | EHCI_LEG_HC_OS_OWNED); if (legsup & EHCI_LEG_HC_BIOS_OWNED) { - /* Ask BIOS to give up ownership */ - legsup &= ~EHCI_LEG_HC_BIOS_OWNED; - legsup |= EHCI_LEG_HC_OS_OWNED; - pci_conf_write(pc, tag, addr + PCI_EHCI_USBLEGSUP, - legsup); for (ms = 0; ms < EHCI_MAX_BIOS_WAIT; ms++) { legsup = pci_conf_read(pc, tag, addr + PCI_EHCI_USBLEGSUP); if (!(legsup & EHCI_LEG_HC_BIOS_OWNED)) break; - delay(10000); + delay(1000); } if (ms == EHCI_MAX_BIOS_WAIT) { aprint_normal("%s: BIOS refuses to give up "