1 /* Author: Domen Puncer <domen@cba.si>. License: WTFPL, see file LICENSE */
4 #include <arch/cm0_regs.h>
8 /* this will be changed to doubly linked list, and irq_request will also have to be fixed */
9 irqreturn_t (*handler
)(int irq
, void *dev_id
);
13 int irq_request(unsigned int irq
, irqreturn_t (*handler
)(int irq
, void *dev_id
), unsigned long flags
, void *dev_id
);
14 void irq_free(unsigned int irq
, void *dev_id
);
16 /* cortex-m0 only supports 32 external interrupts - all is ISER[0] actually */
17 void irq_enable(int irq
)
19 NVIC
->ISER
[irq
>>5] = 1 << (irq
&0x1f);
22 void irq_disable(int irq
)
24 NVIC
->ICER
[irq
>>5] = 1 << (irq
&0x1f);
32 // NVIC->ICPR[irq>>5] = 1 << (irq&0x1f);
34 static irqreturn_t
irq_default_handler(int irq
, void *dev_id
)
36 printf("%s: unhandled irq %i, disabling\n", __func__
, irq
);