summaryrefslogtreecommitdiff
path: root/sys/dev/ppc
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>2000-05-14 13:47:57 +0000
committerDoug Rabson <dfr@FreeBSD.org>2000-05-14 13:47:57 +0000
commit5c885c3f838d38af5d199a4fcf4e25ca32515950 (patch)
tree51d47c5d7934e7500293ada71fcfa072adaa3316 /sys/dev/ppc
parentd5865fe83874f0762bfdf7159953e75927fb7909 (diff)
Notes
Diffstat (limited to 'sys/dev/ppc')
-rw-r--r--sys/dev/ppc/ppc.c26
-rw-r--r--sys/dev/ppc/ppcreg.h4
2 files changed, 27 insertions, 3 deletions
diff --git a/sys/dev/ppc/ppc.c b/sys/dev/ppc/ppc.c
index 53cb50da8aa2..f0aa95db9cd2 100644
--- a/sys/dev/ppc/ppc.c
+++ b/sys/dev/ppc/ppc.c
@@ -1764,7 +1764,31 @@ ppc_probe(device_t dev)
device_printf(dev, "cannot reserve I/O port range\n");
goto error;
}
- ppc->ppc_base = rman_get_start(ppc->res_ioport);
+
+ /* Assume we support the extended IO range of some ppc chipsets...*/
+
+ ppc->rid_extraio = 1;
+ ppc->res_extraio =
+ bus_alloc_resource(dev,
+ SYS_RES_IOPORT,
+ &ppc->rid_extraio,
+ 0,
+ ~0,
+ IO_LPTSIZE,
+ RF_ACTIVE);
+
+ /* If we cannot reserve the extra ports for the extended IO range,
+ indicate this with a non-threatening message (this is not an error,
+ so don't treat it as such)... */
+
+ if (ppc->res_extraio == 0) {
+
+ ppc->rid_extraio = 0;
+
+ device_printf(dev, "This ppc chipset does not support the extended I/O port range...no problem\n");
+}
+
+ ppc->ppc_base = rman_get_start(ppc->res_ioport);
ppc->ppc_flags = device_get_flags(dev);
diff --git a/sys/dev/ppc/ppcreg.h b/sys/dev/ppc/ppcreg.h
index ec17806d1087..ab0bf6f9bdf0 100644
--- a/sys/dev/ppc/ppcreg.h
+++ b/sys/dev/ppc/ppcreg.h
@@ -100,8 +100,8 @@ struct ppc_data {
device_t ppbus; /* parallel port chipset corresponding ppbus */
- int rid_irq, rid_drq, rid_ioport;
- struct resource *res_irq, *res_drq, *res_ioport;
+ int rid_irq, rid_drq, rid_ioport, rid_extraio;
+ struct resource *res_irq, *res_drq, *res_ioport, *res_extraio;
void *intr_cookie;