[BACK]Return to sa1111_intr.c CVS log [TXT][DIR] Up to [local] / sys / arch / arm / sa11x0

Diff for /sys/arch/arm/sa11x0/sa1111_intr.c between version 1.1 and 1.3

version 1.1, 2008/03/05 11:19:00 version 1.3, 2008/03/05 20:27:08
Line 69 
Line 69 
   
         /* NULLify handlers */          /* NULLify handlers */
         memset(sc->sc_handlers, 0, sizeof(sc->sc_handlers));          memset(sc->sc_handlers, 0, sizeof(sc->sc_handlers));
   #if 0
         /* mask all interrupts.. */          /* mask all interrupts.. */
         bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTEN0, 0);          bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTEN0, 0);
         bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTEN1, 0);          bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTEN1, 0);
         /* ..and kill all pending ones */          /* ..and kill all pending ones */
         bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTSTATCLR0, 0xffffffff);          bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTSTATCLR0, 0xffffffff);
         bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTSTATCLR1, 0xffffffff);          bus_space_write_4(sc->sc_bust, sc->sc_bush, SACCIC_INTSTATCLR1, 0xffffffff);
   #endif
           printf(": SA-1111 Interrupt Controller\n");
         /* XXX IPL_AUDIO ? */          /* XXX IPL_AUDIO ? */
         sc->sc_hostih = sa11x0_gpio_intr_establish(saa->sac_xintr, IST_EDGE_RISING, IPL_AUDIO,          sc->sc_hostih = sa11x0_gpio_intr_establish(saa->sac_xintr, IST_EDGE_RISING, IPL_TTY,
                                                 sacic_dispatcher, NULL, "sacic");                                                  sacic_dispatcher, NULL, "sacic");
   
         sacic_sc = sc;          sacic_sc = sc;
Line 220 
Line 222 
                         if (sc->sc_handlers[intrno] != NULL)                          if (sc->sc_handlers[intrno] != NULL)
                                 /* jump! */                                  /* jump! */
                                 sc->sc_handlers[intrno]->ih_func(sc->sc_handlers[intrno]->ih_arg);                                  sc->sc_handlers[intrno]->ih_func(sc->sc_handlers[intrno]->ih_arg);
                         else  
                                 /* no handler */  
                                 printf("%s: sacic_dispatcher: warning, no handler for pending intrno %d\n",  
                                                 sc->sc_dev.dv_xname, intrno);  
   
                                 /* XXX acknowledge intr anyway */                                  /* XXX acknowledge intr anyway */
                                 sacic_intr_clear(intrno);                                  sacic_intr_clear(intrno);
Line 238 
Line 236 
                         if (sc->sc_handlers[intrno] != NULL)                          if (sc->sc_handlers[intrno] != NULL)
                                 /* jump! */                                  /* jump! */
                                 sc->sc_handlers[intrno]->ih_func(sc->sc_handlers[intrno]->ih_arg);                                  sc->sc_handlers[intrno]->ih_func(sc->sc_handlers[intrno]->ih_arg);
                         else  
                                 /* no handler */  
                                 printf("%s: sacic_dispatcher: warning, no handler for pending intrno %d\n",  
                                                 sc->sc_dev.dv_xname, intrno);  
   
                                 /* XXX acknowledge intr anyway */                                  /* XXX acknowledge intr anyway */
                                 sacic_intr_clear(intrno);                                  sacic_intr_clear(intrno);
Line 264 
Line 258 
   
         MALLOC(sih, struct sacic_intrhandler *, sizeof(struct sacic_intrhandler),          MALLOC(sih, struct sacic_intrhandler *, sizeof(struct sacic_intrhandler),
                         M_DEVBUF, M_NOWAIT);                          M_DEVBUF, M_NOWAIT);
           memset(sih, 0, sizeof(struct sacic_intrhandler));
         sih->ih_xintr = irq;          sih->ih_xintr = irq;
         sih->ih_level = level;          sih->ih_level = level;
         sih->ih_func = func;          sih->ih_func = func;
Line 282 
Line 277 
   
 void sa11x1_intr_disestablish(void *cookie)  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);
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

CVSweb