diff options
author | cognet <cognet@FreeBSD.org> | 2005-09-25 21:06:50 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2005-09-25 21:06:50 +0000 |
commit | c29db74a1dfa1602e82f3930206670b2f97ac86a (patch) | |
tree | 5f88b1817b03154839245df7933fa4770c364c8f /sys/arm/sa11x0 | |
parent | 8f159104044d99aba9a96d75f191aa76b33e1a02 (diff) | |
download | FreeBSD-src-c29db74a1dfa1602e82f3930206670b2f97ac86a.zip FreeBSD-src-c29db74a1dfa1602e82f3930206670b2f97ac86a.tar.gz |
Fix multiple abuses of __RMAN_RESOURCE_VISIBLE in the arm code.
Spotted out by: phk
Diffstat (limited to 'sys/arm/sa11x0')
-rw-r--r-- | sys/arm/sa11x0/sa11x0.c | 24 | ||||
-rw-r--r-- | sys/arm/sa11x0/sa11x0_irqhandler.c | 5 | ||||
-rw-r--r-- | sys/arm/sa11x0/sa11x0_var.h | 2 |
3 files changed, 21 insertions, 10 deletions
diff --git a/sys/arm/sa11x0/sa11x0.c b/sys/arm/sa11x0/sa11x0.c index 57fc719..f0d6456 100644 --- a/sys/arm/sa11x0/sa11x0.c +++ b/sys/arm/sa11x0/sa11x0.c @@ -59,7 +59,6 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#define __RMAN_RESOURCE_VISIBLE #include <sys/param.h> #include <sys/systm.h> #include <sys/bus.h> @@ -70,6 +69,7 @@ __FBSDID("$FreeBSD$"); #include <sys/bus.h> #include <sys/interrupt.h> #include <sys/module.h> +#include <sys/rman.h> #include <vm/vm.h> #include <vm/vm_extern.h> @@ -83,7 +83,6 @@ __FBSDID("$FreeBSD$"); #include <arm/sa11x0/sa11x0_ppcreg.h> #include <arm/sa11x0/sa11x0_gpioreg.h> #include <machine/bus.h> -#include <sys/rman.h> extern void sa11x0_activateirqs(void); @@ -105,12 +104,12 @@ sa1110_setup_intr(device_t dev, device_t child, int saved_cpsr; if (flags & INTR_TYPE_TTY) - ires->r_start = 15; + rman_set_start(ires, 15); else if (flags & INTR_TYPE_CLK) { - if (ires->r_start == 0) - ires->r_start = 26; + if (rman_get_start(ires) == 0) + rman_set_start(ires, 26); else - ires->r_start = 27; + rman_set_start(ires, 27); } saved_cpsr = SetCPSR(I32_bit, I32_bit); @@ -124,9 +123,11 @@ static struct resource * sa1110_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - struct resource *res = malloc(sizeof(*res), M_DEVBUF, M_WAITOK); -/* XXX */ - res->r_start = *rid; + struct resource *res; + + res = rman_reserve_resource(&sa11x0_softc->sa11x0_rman, *rid, *rid, + count, flags, child); + return (res); } static int @@ -227,6 +228,11 @@ sa11x0_attach(device_t dev) /* * Attach each devices */ + sc->sa11x0_rman.rm_type = RMAN_ARRAY; + sc->sa11x0_rman.rm_descr = "SA11x0 IRQs"; + if (rman_init(&sc->sa11x0_rman) != 0 || + rman_manage_region(&sc->sa11x0_rman, 0, 32) != 0) + panic("sa11x0_attach: failed to set up rman"); device_add_child(dev, "uart", 0); device_add_child(dev, "saost", 0); bus_generic_probe(dev); diff --git a/sys/arm/sa11x0/sa11x0_irqhandler.c b/sys/arm/sa11x0/sa11x0_irqhandler.c index 5cda4c6..ba64751 100644 --- a/sys/arm/sa11x0/sa11x0_irqhandler.c +++ b/sys/arm/sa11x0/sa11x0_irqhandler.c @@ -86,6 +86,8 @@ __FBSDID("$FreeBSD$"); #include <sys/types.h> #include <sys/bus.h> #include <sys/interrupt.h> +#include <sys/rman.h> + #include <vm/vm.h> #include <vm/vm_extern.h> @@ -111,7 +113,8 @@ arm_get_next_irq() { int irq; - if ((irq = (bus_space_read_4(sc->sc_iot, sc->sc_ioh, SAIPIC_IP) & + if ((irq = (bus_space_read_4(sa11x0_softc->sc_iot, sa11x0_softc->sc_ioh, + SAIPIC_IP) & sa11x0_irq_mask)) != 0) return (ffs(irq) - 1); return (-1); diff --git a/sys/arm/sa11x0/sa11x0_var.h b/sys/arm/sa11x0/sa11x0_var.h index b1bf2a0..1ee4d66 100644 --- a/sys/arm/sa11x0/sa11x0_var.h +++ b/sys/arm/sa11x0/sa11x0_var.h @@ -45,6 +45,7 @@ #include <sys/bus.h> #include <machine/bus.h> +#include <sys/rman.h> struct sa11x0_softc { device_t sc_dev; @@ -55,6 +56,7 @@ struct sa11x0_softc { bus_space_handle_t sc_dmach; bus_space_handle_t sc_reseth; u_int32_t sc_intrmask; + struct rman sa11x0_rman; }; /* Attach args all devices */ |