Module Name: src Committed By: msaitoh Date: Mon Dec 18 04:48:28 UTC 2017
Modified Files: src/sys/dev/pci: pci_subr.c pcireg.h ppbreg.h Log Message: Add VGA 16bit decode bit into the PCI bridge control register. This bit is defined in PCI-to-PCI Bridge Architecture Specification Revision 1.2. This bit has meaning if the VGA enable bit or the VGA Palette Snoop Enable bit is set. NOTE: sys/arch/x86/pci/pci_ranges.c::mmio_range_extend_by_vga_enable() and/or some other functions should be modified. To generate a diff of this commit: cvs rdiff -u -r1.196 -r1.197 src/sys/dev/pci/pci_subr.c cvs rdiff -u -r1.135 -r1.136 src/sys/dev/pci/pcireg.h cvs rdiff -u -r1.7 -r1.8 src/sys/dev/pci/ppbreg.h 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/pci_subr.c diff -u src/sys/dev/pci/pci_subr.c:1.196 src/sys/dev/pci/pci_subr.c:1.197 --- src/sys/dev/pci/pci_subr.c:1.196 Wed Oct 25 08:21:41 2017 +++ src/sys/dev/pci/pci_subr.c Mon Dec 18 04:48:28 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_subr.c,v 1.196 2017/10/25 08:21:41 msaitoh Exp $ */ +/* $NetBSD: pci_subr.c,v 1.197 2017/12/18 04:48:28 msaitoh Exp $ */ /* * Copyright (c) 1997 Zubin D. Dittia. All rights reserved. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.196 2017/10/25 08:21:41 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_subr.c,v 1.197 2017/12/18 04:48:28 msaitoh Exp $"); #ifdef _KERNEL_OPT #include "opt_pci.h" @@ -4290,7 +4290,7 @@ pci_conf_print_type1( const pcireg_t *regs) { int off, width; - pcireg_t rval; + pcireg_t rval, csreg; uint32_t base, limit; uint32_t base_h, limit_h; uint64_t pbase, plimit; @@ -4407,7 +4407,8 @@ pci_conf_print_type1( } else printf(" range: not set\n"); - if (regs[o2i(PCI_COMMAND_STATUS_REG)] & PCI_STATUS_CAPLIST_SUPPORT) + csreg = regs[o2i(PCI_COMMAND_STATUS_REG)]; + if (csreg & PCI_STATUS_CAPLIST_SUPPORT) printf(" Capability list pointer: 0x%02x\n", PCI_CAPLIST_PTR(regs[o2i(PCI_CAPLISTPTR_REG)])); else @@ -4449,6 +4450,13 @@ pci_conf_print_type1( onoff("Secondary SERR forwarding", rval, PCI_BRIDGE_CONTROL_SERR); onoff("ISA enable", rval, PCI_BRIDGE_CONTROL_ISA); onoff("VGA enable", rval, PCI_BRIDGE_CONTROL_VGA); + /* + * VGA 16bit decode bit has meaning if the VGA enable bit or the + * VGA Palette Snoop Enable bit is set. + */ + if (((rval & PCI_BRIDGE_CONTROL_VGA) != 0) + || ((csreg & PCI_COMMAND_PALETTE_ENABLE) != 0)) + onoff("VGA 16bit enable", rval, PCI_BRIDGE_CONTROL_VGA16); onoff("Master abort reporting", rval, PCI_BRIDGE_CONTROL_MABRT); onoff("Secondary bus reset", rval, PCI_BRIDGE_CONTROL_SECBR); onoff("Fast back-to-back capable", rval,PCI_BRIDGE_CONTROL_SECFASTB2B); Index: src/sys/dev/pci/pcireg.h diff -u src/sys/dev/pci/pcireg.h:1.135 src/sys/dev/pci/pcireg.h:1.136 --- src/sys/dev/pci/pcireg.h:1.135 Thu Oct 19 05:52:57 2017 +++ src/sys/dev/pci/pcireg.h Mon Dec 18 04:48:28 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: pcireg.h,v 1.135 2017/10/19 05:52:57 msaitoh Exp $ */ +/* $NetBSD: pcireg.h,v 1.136 2017/12/18 04:48:28 msaitoh Exp $ */ /* * Copyright (c) 1995, 1996, 1999, 2000 @@ -1327,7 +1327,7 @@ typedef u_int8_t pci_intr_line_t; #define PCI_BRIDGE_CONTROL_SERR (1 << 1) #define PCI_BRIDGE_CONTROL_ISA (1 << 2) #define PCI_BRIDGE_CONTROL_VGA (1 << 3) -/* Reserved (1 << 4) */ +#define PCI_BRIDGE_CONTROL_VGA16 (1 << 3) #define PCI_BRIDGE_CONTROL_MABRT (1 << 5) #define PCI_BRIDGE_CONTROL_SECBR (1 << 6) #define PCI_BRIDGE_CONTROL_SECFASTB2B (1 << 7) Index: src/sys/dev/pci/ppbreg.h diff -u src/sys/dev/pci/ppbreg.h:1.7 src/sys/dev/pci/ppbreg.h:1.8 --- src/sys/dev/pci/ppbreg.h:1.7 Wed May 10 03:24:31 2017 +++ src/sys/dev/pci/ppbreg.h Mon Dec 18 04:48:28 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ppbreg.h,v 1.7 2017/05/10 03:24:31 msaitoh Exp $ */ +/* $NetBSD: ppbreg.h,v 1.8 2017/12/18 04:48:28 msaitoh Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. @@ -100,6 +100,7 @@ #define PPB_BC_SERR_ENABLE (1U << (1 + PPB_BC_BITBASE)) #define PPB_BC_ISA_ENABLE (1U << (2 + PPB_BC_BITBASE)) #define PPB_BC_VGA_ENABLE (1U << (3 + PPB_BC_BITBASE)) +#define PPB_BC_VGA16_ENABLE (1U << (3 + PPB_BC_BITBASE)) #define PPB_BC_MASTER_ABORT_MODE (1U << (5 + PPB_BC_BITBASE)) #define PPB_BC_SECONDARY_RESET (1U << (6 + PPB_BC_BITBASE)) #define PPB_BC_FAST_B2B_ENABLE (1U << (7 + PPB_BC_BITBASE))