first button test using interrupts (untested!)
[my-code/arm.git] / betty / interrupts.c
index bb2344c..49ea0cd 100644 (file)
@@ -7,10 +7,7 @@
 
 #include "interrupts.h"
 
-/*
- * module static interrupt variable
- */
-
+// 'module global' interrupt variable
 static t_interrupt interrupt;
 
 /*
@@ -80,21 +77,34 @@ int interrupt_enable(u8 src_number,u8 mode,u8 priority,u32 callback_addr) {
        VICIntEnable=(1<<src_number);
 
        switch(mode) {
-               case INTERRUPT_FIQ:
+               case INTERRUPT_MODE_FIQ:
                        VICIntSelect|=(1<<src_number);
                        break;
-               case INTERRUPT_VIRQ:
+               case INTERRUPT_MODE_VIRQ:
                        if(addr[p]&0x3f)
                                return INTERRUP_PRIORITY_USED;
                        *((volatile u32 *)(addr+p))=callback_addr;
                        *((volatile u32 *)(cntl+p))=src_number&0x1f+(1<<5);
-               case INTERRUPT_IRQ:
+               case INTERRUPT_MODE_IRQ:
                case default:
        }
 
        return INTERRUPT_SET;
 }
 
+void interrupt_ext_ir_config(u8 eint,u8 wakeup,u8 mode,u8 polarity) {
+
+       if(eint>3)
+               return;
+
+       if(wakeup)
+               EXTWAKE=(EXTWAKE&0xf)|(1<<eint);
+
+       EXTMODE=(EXTMODE&0xf)|(mode<<eint);
+       EXTPOLAR=(EXTPOLAR&0xf)|(polarity<<eint);
+       EXTINT=(EXTINT&0xf)|(1<<eint);
+}
+
 /*
  * the actual exception handlers (as defined in startup.s)
  */