diff options
| -rw-r--r-- | sys/dev/atkbdc/atkbdc_isa.c | 22 | ||||
| -rw-r--r-- | sys/dev/atkbdc/atkbdc_subr.c | 22 | ||||
| -rw-r--r-- | sys/dev/sio/sio.c | 27 | ||||
| -rw-r--r-- | sys/isa/atkbdc_isa.c | 22 | ||||
| -rw-r--r-- | sys/isa/sio.c | 27 |
5 files changed, 96 insertions, 24 deletions
diff --git a/sys/dev/atkbdc/atkbdc_isa.c b/sys/dev/atkbdc/atkbdc_isa.c index de1ecdb02e00..2ac252536ce3 100644 --- a/sys/dev/atkbdc/atkbdc_isa.c +++ b/sys/dev/atkbdc/atkbdc_isa.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: atkbdc_isa.c,v 1.5 1999/05/09 20:45:53 peter Exp $ + * $Id: atkbdc_isa.c,v 1.6 1999/05/18 11:33:14 yokota Exp $ */ #include "atkbdc.h" @@ -36,6 +36,9 @@ #include <sys/kernel.h> #include <sys/bus.h> #include <sys/malloc.h> +#include <machine/bus.h> +#include <machine/resource.h> +#include <sys/rman.h> #include <dev/kbd/atkbdcreg.h> @@ -91,11 +94,17 @@ static int atkbdc_probe(device_t dev) { int error; + int rid; + struct resource *port; device_set_desc(dev, "keyboard controller (i8042)"); - error = atkbdc_probe_unit(device_get_unit(dev), isa_get_port(dev)); - if (error == 0) - isa_set_portsize(dev, IO_KBDSIZE); + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); + if (!port) + return ENXIO; + error = atkbdc_probe_unit(device_get_unit(dev), rman_get_start(port)); + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return error; } @@ -106,12 +115,17 @@ atkbdc_add_device(device_t dev, const char *name, int unit) atkbdc_device_t *kdev; device_t child; int t; + int rid; + struct resource *port; kdev = malloc(sizeof(struct atkbdc_device), M_ATKBDDEV, M_NOWAIT); if (!kdev) return; bzero(kdev, sizeof *kdev); + /* XXX should track resource in softc */ + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); kdev->port = sc->port; if (resource_int_value(name, unit, "irq", &t) == 0) diff --git a/sys/dev/atkbdc/atkbdc_subr.c b/sys/dev/atkbdc/atkbdc_subr.c index de1ecdb02e00..2ac252536ce3 100644 --- a/sys/dev/atkbdc/atkbdc_subr.c +++ b/sys/dev/atkbdc/atkbdc_subr.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: atkbdc_isa.c,v 1.5 1999/05/09 20:45:53 peter Exp $ + * $Id: atkbdc_isa.c,v 1.6 1999/05/18 11:33:14 yokota Exp $ */ #include "atkbdc.h" @@ -36,6 +36,9 @@ #include <sys/kernel.h> #include <sys/bus.h> #include <sys/malloc.h> +#include <machine/bus.h> +#include <machine/resource.h> +#include <sys/rman.h> #include <dev/kbd/atkbdcreg.h> @@ -91,11 +94,17 @@ static int atkbdc_probe(device_t dev) { int error; + int rid; + struct resource *port; device_set_desc(dev, "keyboard controller (i8042)"); - error = atkbdc_probe_unit(device_get_unit(dev), isa_get_port(dev)); - if (error == 0) - isa_set_portsize(dev, IO_KBDSIZE); + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); + if (!port) + return ENXIO; + error = atkbdc_probe_unit(device_get_unit(dev), rman_get_start(port)); + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return error; } @@ -106,12 +115,17 @@ atkbdc_add_device(device_t dev, const char *name, int unit) atkbdc_device_t *kdev; device_t child; int t; + int rid; + struct resource *port; kdev = malloc(sizeof(struct atkbdc_device), M_ATKBDDEV, M_NOWAIT); if (!kdev) return; bzero(kdev, sizeof *kdev); + /* XXX should track resource in softc */ + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); kdev->port = sc->port; if (resource_int_value(name, unit, "irq", &t) == 0) diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c index 20354d394e54..8e329710d6e2 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/sio.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sio.c,v 1.240 1999/05/09 20:35:02 peter Exp $ + * $Id: sio.c,v 1.241 1999/05/10 14:01:29 dfr Exp $ * from: @(#)com.c 7.5 (Berkeley) 5/16/91 * from: i386/isa sio.c,v 1.234 */ @@ -596,6 +596,14 @@ sioprobe(dev) int result; device_t xdev; u_int flags = isa_get_flags(dev); + int rid; + struct resource *port; + + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_COMSIZE, RF_ACTIVE); + if (!port) + return ENXIO; if (!already_init) { /* @@ -638,7 +646,6 @@ sioprobe(dev) if (idev == NULL) { printf("sio%d: master device %d not configured\n", device_get_unit(dev), COM_MPMASTER(flags)); - isa_set_irq(dev, 0); idev = dev; } if (!COM_NOTAST4(flags)) { @@ -652,7 +659,7 @@ sioprobe(dev) mcr_image = 0; bzero(failures, sizeof failures); - iobase = isa_get_port(dev); + iobase = rman_get_start(port); /* * We don't want to get actual interrupts, just masked ones. @@ -741,7 +748,6 @@ sioprobe(dev) failures[6] = inb(iobase + com_iir); } /* Check IIR_TXRDY clear ? */ - isa_set_portsize(dev, IO_COMSIZE); result = 0; if ( failures[6] & IIR_TXRDY ) { /* Nop, Double check with clearing IER */ @@ -759,6 +765,7 @@ sioprobe(dev) } outb(iobase + com_cfcr, CFCR_8BITS); enable_intr(); + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return (iobase == siocniobase ? 0 : result); } @@ -809,7 +816,6 @@ sioprobe(dev) device_get_unit(dev), irqmap[0], irqmap[1], irqmap[2], irqmap[3]); - isa_set_portsize(dev, IO_COMSIZE); result = 0; for (fn = 0; fn < sizeof failures; ++fn) if (failures[fn]) { @@ -825,6 +831,7 @@ sioprobe(dev) } break; } + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return (iobase == siocniobase ? 0 : result); } @@ -907,8 +914,16 @@ sioattach(dev) struct resource *res; int zero = 0; u_int flags = isa_get_flags(dev); + int rid; + struct resource *port; + + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_COMSIZE, RF_ACTIVE); + if (!port) + return ENXIO; - iobase = isa_get_port(dev); + iobase = rman_get_start(port); unit = device_get_unit(dev); com = device_get_softc(dev); diff --git a/sys/isa/atkbdc_isa.c b/sys/isa/atkbdc_isa.c index de1ecdb02e00..2ac252536ce3 100644 --- a/sys/isa/atkbdc_isa.c +++ b/sys/isa/atkbdc_isa.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: atkbdc_isa.c,v 1.5 1999/05/09 20:45:53 peter Exp $ + * $Id: atkbdc_isa.c,v 1.6 1999/05/18 11:33:14 yokota Exp $ */ #include "atkbdc.h" @@ -36,6 +36,9 @@ #include <sys/kernel.h> #include <sys/bus.h> #include <sys/malloc.h> +#include <machine/bus.h> +#include <machine/resource.h> +#include <sys/rman.h> #include <dev/kbd/atkbdcreg.h> @@ -91,11 +94,17 @@ static int atkbdc_probe(device_t dev) { int error; + int rid; + struct resource *port; device_set_desc(dev, "keyboard controller (i8042)"); - error = atkbdc_probe_unit(device_get_unit(dev), isa_get_port(dev)); - if (error == 0) - isa_set_portsize(dev, IO_KBDSIZE); + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); + if (!port) + return ENXIO; + error = atkbdc_probe_unit(device_get_unit(dev), rman_get_start(port)); + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return error; } @@ -106,12 +115,17 @@ atkbdc_add_device(device_t dev, const char *name, int unit) atkbdc_device_t *kdev; device_t child; int t; + int rid; + struct resource *port; kdev = malloc(sizeof(struct atkbdc_device), M_ATKBDDEV, M_NOWAIT); if (!kdev) return; bzero(kdev, sizeof *kdev); + /* XXX should track resource in softc */ + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_KBDSIZE, RF_ACTIVE); kdev->port = sc->port; if (resource_int_value(name, unit, "irq", &t) == 0) diff --git a/sys/isa/sio.c b/sys/isa/sio.c index 20354d394e54..8e329710d6e2 100644 --- a/sys/isa/sio.c +++ b/sys/isa/sio.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sio.c,v 1.240 1999/05/09 20:35:02 peter Exp $ + * $Id: sio.c,v 1.241 1999/05/10 14:01:29 dfr Exp $ * from: @(#)com.c 7.5 (Berkeley) 5/16/91 * from: i386/isa sio.c,v 1.234 */ @@ -596,6 +596,14 @@ sioprobe(dev) int result; device_t xdev; u_int flags = isa_get_flags(dev); + int rid; + struct resource *port; + + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_COMSIZE, RF_ACTIVE); + if (!port) + return ENXIO; if (!already_init) { /* @@ -638,7 +646,6 @@ sioprobe(dev) if (idev == NULL) { printf("sio%d: master device %d not configured\n", device_get_unit(dev), COM_MPMASTER(flags)); - isa_set_irq(dev, 0); idev = dev; } if (!COM_NOTAST4(flags)) { @@ -652,7 +659,7 @@ sioprobe(dev) mcr_image = 0; bzero(failures, sizeof failures); - iobase = isa_get_port(dev); + iobase = rman_get_start(port); /* * We don't want to get actual interrupts, just masked ones. @@ -741,7 +748,6 @@ sioprobe(dev) failures[6] = inb(iobase + com_iir); } /* Check IIR_TXRDY clear ? */ - isa_set_portsize(dev, IO_COMSIZE); result = 0; if ( failures[6] & IIR_TXRDY ) { /* Nop, Double check with clearing IER */ @@ -759,6 +765,7 @@ sioprobe(dev) } outb(iobase + com_cfcr, CFCR_8BITS); enable_intr(); + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return (iobase == siocniobase ? 0 : result); } @@ -809,7 +816,6 @@ sioprobe(dev) device_get_unit(dev), irqmap[0], irqmap[1], irqmap[2], irqmap[3]); - isa_set_portsize(dev, IO_COMSIZE); result = 0; for (fn = 0; fn < sizeof failures; ++fn) if (failures[fn]) { @@ -825,6 +831,7 @@ sioprobe(dev) } break; } + bus_release_resource(dev, SYS_RES_IOPORT, rid, port); return (iobase == siocniobase ? 0 : result); } @@ -907,8 +914,16 @@ sioattach(dev) struct resource *res; int zero = 0; u_int flags = isa_get_flags(dev); + int rid; + struct resource *port; + + rid = 0; + port = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, + 0, ~0, IO_COMSIZE, RF_ACTIVE); + if (!port) + return ENXIO; - iobase = isa_get_port(dev); + iobase = rman_get_start(port); unit = device_get_unit(dev); com = device_get_softc(dev); |
