Module Name:    src
Committed By:   riastradh
Date:           Wed Feb 25 14:49:01 UTC 2015

Modified Files:
        src/sys/external/bsd/drm2/include/linux: pci.h

Log Message:
Add pci_enable_rom/pci_disable_rom to <linux/pci.h>.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/include/linux/pci.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/external/bsd/drm2/include/linux/pci.h
diff -u src/sys/external/bsd/drm2/include/linux/pci.h:1.11 src/sys/external/bsd/drm2/include/linux/pci.h:1.12
--- src/sys/external/bsd/drm2/include/linux/pci.h:1.11	Tue Nov 11 11:30:21 2014
+++ src/sys/external/bsd/drm2/include/linux/pci.h	Wed Feb 25 14:49:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci.h,v 1.11 2014/11/11 11:30:21 nonaka Exp $	*/
+/*	$NetBSD: pci.h,v 1.12 2015/02/25 14:49:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -444,6 +444,7 @@ static inline void
 pci_unmap_rom(struct pci_dev *pdev, void __pci_rom_iomem *vaddr __unused)
 {
 
+	/* XXX Disable the ROM address decoder.  */
 	KASSERT(ISSET(pdev->pd_kludges, NBPCI_KLUDGE_MAP_ROM));
 	KASSERT(vaddr == pdev->pd_rom_vaddr);
 	bus_space_unmap(pdev->pd_rom_bst, pdev->pd_rom_bsh, pdev->pd_rom_size);
@@ -510,6 +511,40 @@ pci_map_rom(struct pci_dev *pdev, size_t
 	return pdev->pd_rom_vaddr;
 }
 
+static inline int
+pci_enable_rom(struct pci_dev *pdev)
+{
+	const pci_chipset_tag_t pc = pdev->pd_pa.pa_pc;
+	const pcitag_t tag = pdev->pd_pa.pa_tag;
+	pcireg_t addr;
+	int s;
+
+	/* XXX Don't do anything if the ROM isn't there.  */
+
+	s = splhigh();
+	addr = pci_conf_read(pc, tag, PCI_MAPREG_ROM);
+	addr |= PCI_MAPREG_ROM_ENABLE;
+	pci_conf_write(pc, tag, PCI_MAPREG_ROM, addr);
+	splx(s);
+
+	return 0;
+}
+
+static inline void
+pci_disable_rom(struct pci_dev *pdev)
+{
+	const pci_chipset_tag_t pc = pdev->pd_pa.pa_pc;
+	const pcitag_t tag = pdev->pd_pa.pa_tag;
+	pcireg_t addr;
+	int s;
+
+	s = splhigh();
+	addr = pci_conf_read(pc, tag, PCI_MAPREG_ROM);
+	addr &= ~(pcireg_t)PCI_MAPREG_ROM_ENABLE;
+	pci_conf_write(pc, tag, PCI_MAPREG_ROM, addr);
+	splx(s);
+}
+
 static inline bus_addr_t
 pci_resource_start(struct pci_dev *pdev, unsigned i)
 {

Reply via email to