[haiku-commits] r41514 - haiku/trunk/src/add-ons/kernel/busses/usb

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 15 May 2011 17:03:38 +0200 (CEST)

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;


Other related posts:

  • » [haiku-commits] r41514 - haiku/trunk/src/add-ons/kernel/busses/usb - mmlr