summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2009-07-23 19:30:42 +0000
committerkettenis <kettenis@openbsd.org>2009-07-23 19:30:42 +0000
commitd3fce975a82fe4b614ad2916bc350fed9456362f (patch)
tree852043702d1bf85555e9cbd356da00efd2199222
parentAvoid twiddling the lower bits of a BAR such that the code becomes usable (diff)
downloadwireguard-openbsd-d3fce975a82fe4b614ad2916bc350fed9456362f.tar.xz
wireguard-openbsd-d3fce975a82fe4b614ad2916bc350fed9456362f.zip
Use pci_mapreg_map() to map ROM.
-rw-r--r--sys/dev/pci/if_cas.c19
-rw-r--r--sys/dev/pci/if_gem_pci.c19
2 files changed, 14 insertions, 24 deletions
diff --git a/sys/dev/pci/if_cas.c b/sys/dev/pci/if_cas.c
index 6baf4d8d563..019c9bc3591 100644
--- a/sys/dev/pci/if_cas.c
+++ b/sys/dev/pci/if_cas.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_cas.c,v 1.26 2009/06/13 12:18:57 kettenis Exp $ */
+/* $OpenBSD: if_cas.c,v 1.27 2009/07/23 19:35:32 kettenis Exp $ */
/*
*
@@ -189,25 +189,20 @@ cas_pci_enaddr(struct cas_softc *sc, struct pci_attach_args *pa)
struct pci_vpd *vpd;
bus_space_handle_t romh;
bus_space_tag_t romt;
- bus_size_t romsize;
+ bus_size_t romsize = 0;
u_int8_t buf[32], *desc;
- pcireg_t address, mask;
+ pcireg_t address;
int dataoff, vpdoff, len;
int rv = -1;
+ if (pci_mapreg_map(pa, PCI_ROM_REG, PCI_MAPREG_TYPE_MEM, 0,
+ &romt, &romh, 0, &romsize, 0))
+ return (-1);
+
address = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_ROM_REG);
- pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_ROM_REG, 0xfffffffe);
- mask = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_ROM_REG);
address |= PCI_ROM_ENABLE;
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_ROM_REG, address);
- romt = pa->pa_memt;
- romsize = PCI_ROM_SIZE(mask);
- if (bus_space_map(romt, PCI_ROM_ADDR(address), romsize, 0, &romh)) {
- romsize = 0;
- goto fail;
- }
-
bus_space_read_region_1(romt, romh, 0, buf, sizeof(buf));
if (bcmp(buf, cas_promhdr, sizeof(cas_promhdr)))
goto fail;
diff --git a/sys/dev/pci/if_gem_pci.c b/sys/dev/pci/if_gem_pci.c
index ed188600a6d..36be3324560 100644
--- a/sys/dev/pci/if_gem_pci.c
+++ b/sys/dev/pci/if_gem_pci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_gem_pci.c,v 1.29 2009/03/29 21:53:52 sthen Exp $ */
+/* $OpenBSD: if_gem_pci.c,v 1.30 2009/07/23 19:30:42 kettenis Exp $ */
/* $NetBSD: if_gem_pci.c,v 1.1 2001/09/16 00:11:42 eeh Exp $ */
/*
@@ -137,25 +137,20 @@ gem_pci_enaddr(struct gem_softc *sc, struct pci_attach_args *pa)
struct pci_vpd *vpd;
bus_space_handle_t romh;
bus_space_tag_t romt;
- bus_size_t romsize;
+ bus_size_t romsize = 0;
u_int8_t buf[32];
- pcireg_t address, mask;
+ pcireg_t address;
int dataoff, vpdoff;
int rv = -1;
+ if (pci_mapreg_map(pa, PCI_ROM_REG, PCI_MAPREG_TYPE_MEM, 0,
+ &romt, &romh, 0, &romsize, 0))
+ return (-1);
+
address = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_ROM_REG);
- pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_ROM_REG, 0xfffffffe);
- mask = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_ROM_REG);
address |= PCI_ROM_ENABLE;
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_ROM_REG, address);
- romt = pa->pa_memt;
- romsize = PCI_ROM_SIZE(mask);
- if (bus_space_map(romt, PCI_ROM_ADDR(address), romsize, 0, &romh)) {
- romsize = 0;
- goto fail;
- }
-
bus_space_read_region_1(romt, romh, 0, buf, sizeof(buf));
if (bcmp(buf, gem_promhdr, sizeof(gem_promhdr)))
goto fail;