Tue Oct 16 00:10:58 2018 UTC ()
Set PCI_QUIRK_HASEXTCNF flag for AMD Seattle PCI host bridges


(jmcneill)
diff -r1.10 -r1.11 src/sys/dev/pci/pci_quirks.c

cvs diff -r1.10 -r1.11 src/sys/dev/pci/pci_quirks.c (expand / switch to unified diff)

--- src/sys/dev/pci/pci_quirks.c 2018/02/28 05:50:06 1.10
+++ src/sys/dev/pci/pci_quirks.c 2018/10/16 00:10:58 1.11
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: pci_quirks.c,v 1.10 2018/02/28 05:50:06 msaitoh Exp $ */ 1/* $NetBSD: pci_quirks.c,v 1.11 2018/10/16 00:10:58 jmcneill Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1998 Christopher G. Demetriou. All rights reserved. 4 * Copyright (c) 1998 Christopher G. Demetriou. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software 14 * 3. All advertising materials mentioning features or use of this software
@@ -25,44 +25,48 @@ @@ -25,44 +25,48 @@
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */ 31 */
32 32
33/* 33/*
34 * PCI Quirk data table and lookup function. 34 * PCI Quirk data table and lookup function.
35 */ 35 */
36 36
37#include <sys/cdefs.h> 37#include <sys/cdefs.h>
38__KERNEL_RCSID(0, "$NetBSD: pci_quirks.c,v 1.10 2018/02/28 05:50:06 msaitoh Exp $"); 38__KERNEL_RCSID(0, "$NetBSD: pci_quirks.c,v 1.11 2018/10/16 00:10:58 jmcneill Exp $");
39 39
40#include <sys/param.h> 40#include <sys/param.h>
41#include <sys/device.h> 41#include <sys/device.h>
42 42
43#include <dev/pci/pcireg.h> 43#include <dev/pci/pcireg.h>
44#include <dev/pci/pcivar.h> 44#include <dev/pci/pcivar.h>
45#include <dev/pci/pcidevs.h> 45#include <dev/pci/pcidevs.h>
46 46
47static const struct pci_quirkdata pci_quirks[] = { 47static const struct pci_quirkdata pci_quirks[] = {
48 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371FB_ISA, 48 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371FB_ISA,
49 PCI_QUIRK_MULTIFUNCTION }, 49 PCI_QUIRK_MULTIFUNCTION },
50 { PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_XBOX_PCHB, 50 { PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_XBOX_PCHB,
51 PCI_QUIRK_SKIP_FUNC1 | PCI_QUIRK_SKIP_FUNC2 }, 51 PCI_QUIRK_SKIP_FUNC1 | PCI_QUIRK_SKIP_FUNC2 },
52 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XEOND_MEM_0_TTR_1, 52 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XEOND_MEM_0_TTR_1,
53 PCI_QUIRK_HASEXTCNF }, 53 PCI_QUIRK_HASEXTCNF },
54 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_COREI76K_IMC_0, 54 { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_COREI76K_IMC_0,
55 PCI_QUIRK_HASEXTCNF }, 55 PCI_QUIRK_HASEXTCNF },
 56 { PCI_VENDOR_AMD, PCI_PRODUCT_AMD_SEATTLE_PCHB_1,
 57 PCI_QUIRK_HASEXTCNF },
 58 { PCI_VENDOR_AMD, PCI_PRODUCT_AMD_SEATTLE_PCHB_2,
 59 PCI_QUIRK_HASEXTCNF },
56}; 60};
57 61
58const struct pci_quirkdata * 62const struct pci_quirkdata *
59pci_lookup_quirkdata(pci_vendor_id_t vendor, pci_product_id_t product) 63pci_lookup_quirkdata(pci_vendor_id_t vendor, pci_product_id_t product)
60{ 64{
61 int i; 65 int i;
62 66
63 for (i = 0; i < __arraycount(pci_quirks); i++) 67 for (i = 0; i < __arraycount(pci_quirks); i++)
64 if (vendor == pci_quirks[i].vendor && 68 if (vendor == pci_quirks[i].vendor &&
65 product == pci_quirks[i].product) 69 product == pci_quirks[i].product)
66 return (&pci_quirks[i]); 70 return (&pci_quirks[i]);
67 return (NULL); 71 return (NULL);
68} 72}