=================================================================== RCS file: /cvs/sys/arch/arm/sa11x0/sa1111_intr.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sys/arch/arm/sa11x0/sa1111_intr.c 2008/03/05 11:19:00 1.1 +++ sys/arch/arm/sa11x0/sa1111_intr.c 2008/03/05 14:06:41 1.2 @@ -1,4 +1,4 @@ -/* $Id: sa1111_intr.c,v 1.1 2008/03/05 11:19:00 nbrk Exp $ */ +/* $Id: sa1111_intr.c,v 1.2 2008/03/05 14:06:41 nbrk Exp $ */ #include #include @@ -264,6 +264,7 @@ MALLOC(sih, struct sacic_intrhandler *, sizeof(struct sacic_intrhandler), M_DEVBUF, M_NOWAIT); + memset(sih, 0, sizeof(struct sacic_intrhandler)); sih->ih_xintr = irq; sih->ih_level = level; sih->ih_func = func; @@ -282,5 +283,13 @@ void sa11x1_intr_disestablish(void *cookie) { - /* TODO */ + /* + * Unlink interrupt handler and free its data structures. + */ + struct sacic_softc *sc = sacic_sc; + struct sacic_intrhandler *sih = cookie; + + sc->sc_handlers[sih->ih_xintr] = NULL; + + FREE(sih, M_DEVBUF); }