diff options
Diffstat (limited to 'sys/alpha/tlsb/tlsb.c')
| -rw-r--r-- | sys/alpha/tlsb/tlsb.c | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/sys/alpha/tlsb/tlsb.c b/sys/alpha/tlsb/tlsb.c index 00aff9adf87ae..6e618a3a11e14 100644 --- a/sys/alpha/tlsb/tlsb.c +++ b/sys/alpha/tlsb/tlsb.c @@ -95,11 +95,8 @@ static devclass_t tlsb_devclass; static int tlsb_probe(device_t dev); static void tlsb_print_child(device_t dev, device_t child); static int tlsb_read_ivar(device_t dev, device_t child, int which, u_long* result); -static int tlsb_setup_intr(device_t dev, device_t child, - struct resource *irq, - driver_intr_t *intr, void *arg, void **cookiep); -static int tlsb_teardown_intr(device_t dev, device_t child, - struct resource *irq, void *cookie); +static void *tlsb_create_intr(device_t dev, device_t child, int irq, driver_intr_t *intr, void *arg); +static int tlsb_connect_intr(device_t dev, void* ih); static device_method_t tlsb_methods[] = { /* Device interface */ @@ -112,8 +109,8 @@ static device_method_t tlsb_methods[] = { DEVMETHOD(bus_print_child, tlsb_print_child), DEVMETHOD(bus_read_ivar, tlsb_read_ivar), DEVMETHOD(bus_write_ivar, bus_generic_write_ivar), - DEVMETHOD(bus_setup_intr, tlsb_setup_intr), - DEVMETHOD(bus_teardown_intr, tlsb_teardown_intr), + DEVMETHOD(bus_create_intr, tlsb_create_intr), + DEVMETHOD(bus_connect_intr, tlsb_connect_intr), { 0, 0 } }; @@ -268,32 +265,27 @@ tlsb_read_ivar(device_t dev, device_t child, return ENOENT; } -static int -tlsb_setup_intr(device_t dev, device_t child, - struct resource *irq, - driver_intr_t *intr, void *arg, void **cookiep) +static void * +tlsb_create_intr(device_t dev, device_t child, + int irq, driver_intr_t *intr, void *arg) { struct tlsb_softc* sc = device_get_softc(dev); struct intr_mapping* i; i = malloc(sizeof(struct intr_mapping), M_DEVBUF, M_NOWAIT); if (!i) - return ENOMEM; + return NULL; i->intr = intr; i->arg = arg; - STAILQ_INSERT_TAIL(&sc->intr_handlers, i, queue); - *cookiep = i; - return 0; + return i; } static int -tlsb_teardown_intr(device_t dev, device_t child, - struct resource *irq, void *cookie) +tlsb_connect_intr(device_t dev, void *ih) { struct tlsb_softc* sc = device_get_softc(dev); - struct intr_mapping* i = cookie; + struct intr_mapping* i = ih; - STAILQ_REMOVE(&sc->intr_handlers, i, intr_mapping, queue); - free(i, M_DEVBUF); + STAILQ_INSERT_TAIL(&sc->intr_handlers, i, queue); return 0; } @@ -343,8 +335,7 @@ tlsb_node_type_str(u_int32_t dtype) default: bzero(tlsb_line, sizeof(tlsb_line)); - snprintf(tlsb_line, sizeof(tlsb_line), - "unknown, dtype 0x%x", dtype); + sprintf(tlsb_line, "unknown, dtype 0x%x", dtype); return (tlsb_line); } /* NOTREACHED */ |
