import cbaos v0.1
[cbaos.git] / arch / arm7tdmi / mach-lpc21xx / interrupt.c
blob1a932f8c4ab027f3463d4bcb60d17b12c2f507ec
1 /* Author: Domen Puncer <domen@cba.si>. License: WTFPL, see file LICENSE */
2 #include <interrupt.h>
3 #include <stdio.h>
5 // myeah, should be in arch for NVIC
6 #include <mach/lpc21xx_regs.h>
8 #warning "TODO"
11 struct irq_entry {
12 /* this will be changed to doubly linked list, and irq_request will also have to be fixed */
13 irqreturn_t (*handler)(int irq, void *dev_id);
14 void *dev_id;
17 int irq_request(unsigned int irq, irqreturn_t (*handler)(int irq, void *dev_id), unsigned long flags, void *dev_id);
18 void irq_free(unsigned int irq, void *dev_id);
20 void irq_enable(int irq)
22 VICIntSelect &= ~(1<<irq);
23 VICIntEnable |= 1<<irq;
26 void irq_disable(int irq)
28 VICIntEnClr |= 1<<irq;
31 void irq_ack(int irq)
33 VICVectAddr = 0; /* clear interrupt pending (of current executing interrupt) */
37 // XXX install me
38 static irqreturn_t irq_default_handler(int irq, void *dev_id)
40 printf("%s: unhandled irq %i, disabling\n", __func__, irq);
41 irq_disable(irq);
42 return IRQ_HANDLED;