Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Make sure PIRQD enable bit is set. From FreeBSD.



details:   https://anonhg.NetBSD.org/src/rev/6590ff50f78e
branches:  trunk
changeset: 481266:6590ff50f78e
user:      augustss <augustss%NetBSD.org@localhost>
date:      Tue Jan 25 11:26:06 2000 +0000

description:
Make sure PIRQD enable bit is set.  From FreeBSD.

diffstat:

 sys/dev/pci/uhci_pci.c |  11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diffs (32 lines):

diff -r b1f7678ce36b -r 6590ff50f78e sys/dev/pci/uhci_pci.c
--- a/sys/dev/pci/uhci_pci.c    Tue Jan 25 09:36:43 2000 +0000
+++ b/sys/dev/pci/uhci_pci.c    Tue Jan 25 11:26:06 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uhci_pci.c,v 1.13 1999/11/20 00:57:08 augustss Exp $   */
+/*     $NetBSD: uhci_pci.c,v 1.14 2000/01/25 11:26:06 augustss Exp $   */
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -99,7 +99,7 @@
        pci_chipset_tag_t pc = pa->pa_pc;
        char const *intrstr;
        pci_intr_handle_t ih;
-       pcireg_t csr;
+       pcireg_t csr, legsup;
        char *vendor;
        char *devname = sc->sc.sc_bus.bdev.dv_xname;
        char devinfo[256];
@@ -143,6 +143,13 @@
        }
        printf("%s: interrupting at %s\n", devname, intrstr);
 
+        /* Verify that the PIRQD enable bit is set, some BIOS's don't do that*/
+       legsup = pci_conf_read(pc, pa->pa_tag, PCI_LEGSUP);
+       if (!(legsup & PCI_LEGSUP_USBPIRQDEN)) {
+               legsup = PCI_LEGSUP_USBPIRQDEN;
+               pci_conf_write(pc, pa->pa_tag, PCI_LEGSUP, legsup);
+        }
+
        switch(pci_conf_read(pc, pa->pa_tag, PCI_USBREV) & PCI_USBREV_MASK) {
        case PCI_USBREV_PRE_1_0:
                sc->sc.sc_bus.usbrev = USBREV_PRE_1_0;



Home | Main Index | Thread Index | Old Index