aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>1999-05-30 10:49:25 +0000
committerDoug Rabson <dfr@FreeBSD.org>1999-05-30 10:49:25 +0000
commit13b285ba59e7280002caa4b3e25b49efdf04a508 (patch)
tree8693fb617c17625964677cabf2b4495227e24296
parent75aeebed719ec153ab5a200e23a41a2cb71da8da (diff)
downloadsrc-13b285ba59e7280002caa4b3e25b49efdf04a508.tar.gz
src-13b285ba59e7280002caa4b3e25b49efdf04a508.zip
Use resource allocation apis to get ports.
Notes
Notes: svn path=/head/; revision=47610
-rw-r--r--sys/alpha/isa/mcclock_isa.c43
1 files changed, 34 insertions, 9 deletions
diff --git a/sys/alpha/isa/mcclock_isa.c b/sys/alpha/isa/mcclock_isa.c
index 71b22a033c1a..da310f036297 100644
--- a/sys/alpha/isa/mcclock_isa.c
+++ b/sys/alpha/isa/mcclock_isa.c
@@ -1,4 +1,4 @@
-/* $Id: mcclock_isa.c,v 1.4 1999/05/08 21:58:38 dfr Exp $ */
+/* $Id: mcclock_isa.c,v 1.5 1999/05/18 21:24:11 dfr Exp $ */
/* $NetBSD: mcclock_tlsb.c,v 1.8 1998/05/13 02:50:29 thorpej Exp $ */
/*
@@ -36,13 +36,20 @@
#include <sys/systm.h>
#include <sys/module.h>
#include <sys/bus.h>
+#include <machine/bus_pio.h>
+#include <machine/bus.h>
+#include <machine/resource.h>
+#include <sys/rman.h>
#include <isa/isavar.h>
#include <machine/clockvar.h>
#include <dev/dec/mcclockvar.h>
-
#include <dev/dec/mc146818reg.h>
+struct mcclock_softc {
+ struct resource *port;
+};
+
static int mcclock_isa_probe(device_t dev);
static int mcclock_isa_attach(device_t dev);
static void mcclock_isa_write(device_t, u_int, u_int);
@@ -77,7 +84,19 @@ static devclass_t mcclock_devclass;
int
mcclock_isa_probe(device_t dev)
{
- isa_set_portsize(dev, 2);
+ struct mcclock_softc *sc = device_get_softc(dev);
+ int rid;
+
+ /* No pnp support */
+ if (isa_get_vendorid(dev))
+ return (ENXIO);
+
+ rid = 0;
+ sc->port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
+ 0ul, ~0ul, 2, RF_ACTIVE);
+ if (!sc->port)
+ return ENXIO;
+
device_set_desc(dev, "MC146818A real time clock");
return 0;
}
@@ -92,17 +111,23 @@ mcclock_isa_attach(device_t dev)
static void
mcclock_isa_write(device_t dev, u_int reg, u_int val)
{
- u_int port = isa_get_port(dev);
- outb(port, reg);
- outb(port+1, val);
+ struct mcclock_softc *sc = device_get_softc(dev);
+ bus_space_tag_t iot = rman_get_bustag(sc->port);
+ bus_space_tag_t ioh = rman_get_bushandle(sc->port);
+
+ bus_space_write_1(iot, ioh, 0, reg);
+ bus_space_write_1(iot, ioh, 1, val);
}
static u_int
mcclock_isa_read(device_t dev, u_int reg)
{
- u_int port = isa_get_port(dev);
- outb(port, reg);
- return inb(port+1);
+ struct mcclock_softc *sc = device_get_softc(dev);
+ bus_space_tag_t iot = rman_get_bustag(sc->port);
+ bus_space_tag_t ioh = rman_get_bushandle(sc->port);
+
+ bus_space_write_1(iot, ioh, 0, reg);
+ return bus_space_read_1(iot, ioh, 1);
}
DRIVER_MODULE(mcclock, isa, mcclock_isa_driver, mcclock_devclass, 0, 0);