Module Name: src Committed By: snj Date: Sat Jul 8 16:34:35 UTC 2017
Modified Files: src/sys/dev/pci [netbsd-7]: ehci_pci.c Log Message: Pull up following revision(s) (requested by sborrill in ticket #1431): sys/dev/pci/ehci_pci.c: revision 1.65 Deal with broken BIOSes that leave PCI interrupts disabled. Thanks to nick@ To generate a diff of this commit: cvs rdiff -u -r1.58.4.1 -r1.58.4.2 src/sys/dev/pci/ehci_pci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/ehci_pci.c diff -u src/sys/dev/pci/ehci_pci.c:1.58.4.1 src/sys/dev/pci/ehci_pci.c:1.58.4.2 --- src/sys/dev/pci/ehci_pci.c:1.58.4.1 Wed Apr 5 19:54:19 2017 +++ src/sys/dev/pci/ehci_pci.c Sat Jul 8 16:34:35 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ehci_pci.c,v 1.58.4.1 2017/04/05 19:54:19 snj Exp $ */ +/* $NetBSD: ehci_pci.c,v 1.58.4.2 2017/07/08 16:34:35 snj Exp $ */ /* * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ehci_pci.c,v 1.58.4.1 2017/04/05 19:54:19 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ehci_pci.c,v 1.58.4.2 2017/07/08 16:34:35 snj Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -163,10 +163,14 @@ ehci_pci_attach(device_t parent, device_ break; } + pcireg_t intr = pci_conf_read(pc, tag, PCI_INTERRUPT_REG); + int pin = PCI_INTERRUPT_PIN(intr); + /* Enable the device. */ csr = pci_conf_read(pc, tag, PCI_COMMAND_STATUS_REG); - pci_conf_write(pc, tag, PCI_COMMAND_STATUS_REG, - csr | PCI_COMMAND_MASTER_ENABLE); + csr |= PCI_COMMAND_MASTER_ENABLE; + csr &= ~(pin ? PCI_COMMAND_INTERRUPT_DISABLE : 0); + pci_conf_write(pc, tag, PCI_COMMAND_STATUS_REG, csr); /* Map and establish the interrupt. */ if (pci_intr_map(pa, &ih)) {