summaryrefslogtreecommitdiff
path: root/sys/alpha/tlsb/tlsb.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/alpha/tlsb/tlsb.c')
-rw-r--r--sys/alpha/tlsb/tlsb.c35
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 */