Author: mmlr Date: 2011-05-15 17:03:38 +0200 (Sun, 15 May 2011) New Revision: 41514 Changeset: https://dev.haiku-os.org/changeset/41514 Ticket: https://dev.haiku-os.org/ticket/5551 Modified: haiku/trunk/src/add-ons/kernel/busses/usb/ehci.cpp Log: Check if PCI interrupts are disabled on the EHCI device. Rather unlikely to be the case, but maybe there's some BIOSes that disable them? More or less poking around for #5551, doesn't do any harm in any case. Modified: haiku/trunk/src/add-ons/kernel/busses/usb/ehci.cpp =================================================================== --- haiku/trunk/src/add-ons/kernel/busses/usb/ehci.cpp 2011-05-15 14:42:53 UTC (rev 41513) +++ haiku/trunk/src/add-ons/kernel/busses/usb/ehci.cpp 2011-05-15 15:03:38 UTC (rev 41514) @@ -326,6 +326,16 @@ | EHCI_USBINTR_USBINT | EHCI_USBINTR_INTONAA; WriteOpReg(EHCI_USBINTR, fEnabledInterrupts); + // ensure that interrupts are enabled on the PCI device as well + command = sPCIModule->read_pci_config(fPCIInfo->bus, fPCIInfo->device, + fPCIInfo->function, PCI_command, 2); + if ((command & PCI_command_int_disable) != 0) { + TRACE_ALWAYS("PCI interrupts were disabled, enabling\n"); + command &= ~PCI_command_int_disable; + sPCIModule->write_pci_config(fPCIInfo->bus, fPCIInfo->device, + fPCIInfo->function, PCI_command, 2, command); + } + // structures don't span page boundaries size_t itdListSize = EHCI_VFRAMELIST_ENTRIES_COUNT / (B_PAGE_SIZE / sizeof(itd_entry)) * B_PAGE_SIZE;