linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-m68k / amigaints.h
index 7c87134..aa968d0 100644 (file)
@@ -13,8 +13,6 @@
 #ifndef _ASMm68k_AMIGAINTS_H_
 #define _ASMm68k_AMIGAINTS_H_
 
-#include <asm/irq.h>
-
 /*
 ** Amiga Interrupt sources.
 **
 #define CIA_IRQS            (5)
 #define AMI_IRQS            (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */
 
-/* builtin serial port interrupts */
-#define IRQ_AMIGA_TBE          (IRQ_USER+0)
-#define IRQ_AMIGA_RBF          (IRQ_USER+11)
+/* vertical blanking interrupt */
+#define IRQ_AMIGA_VERTB     0
 
-/* floppy disk interrupts */
-#define IRQ_AMIGA_DSKBLK       (IRQ_USER+1)
-#define IRQ_AMIGA_DSKSYN       (IRQ_USER+12)
+/* copper interrupt */
+#define IRQ_AMIGA_COPPER    1
 
-/* software interrupts */
-#define IRQ_AMIGA_SOFT         (IRQ_USER+2)
+/* Audio interrupts */
+#define IRQ_AMIGA_AUD0     2
+#define IRQ_AMIGA_AUD1     3
+#define IRQ_AMIGA_AUD2     4
+#define IRQ_AMIGA_AUD3     5
 
-/* interrupts from external hardware */
-#define IRQ_AMIGA_PORTS                IRQ_AUTO_2
-#define IRQ_AMIGA_EXTER                IRQ_AUTO_6
+/* Blitter done interrupt */
+#define IRQ_AMIGA_BLIT     6
 
-/* copper interrupt */
-#define IRQ_AMIGA_COPPER       (IRQ_USER+4)
+/* floppy disk interrupts */
+#define IRQ_AMIGA_DSKSYN    7
+#define IRQ_AMIGA_DSKBLK    8
 
-/* vertical blanking interrupt */
-#define IRQ_AMIGA_VERTB                (IRQ_USER+5)
+/* builtin serial port interrupts */
+#define IRQ_AMIGA_RBF      9
+#define IRQ_AMIGA_TBE      10
 
-/* Blitter done interrupt */
-#define IRQ_AMIGA_BLIT         (IRQ_USER+6)
+/* software interrupts */
+#define IRQ_AMIGA_SOFT      11
 
-/* Audio interrupts */
-#define IRQ_AMIGA_AUD0         (IRQ_USER+7)
-#define IRQ_AMIGA_AUD1         (IRQ_USER+8)
-#define IRQ_AMIGA_AUD2         (IRQ_USER+9)
-#define IRQ_AMIGA_AUD3         (IRQ_USER+10)
+/* interrupts from external hardware */
+#define IRQ_AMIGA_PORTS            12
+#define IRQ_AMIGA_EXTER            13
 
 /* CIA interrupt sources */
-#define IRQ_AMIGA_CIAA         (IRQ_USER+14)
-#define IRQ_AMIGA_CIAA_TA      (IRQ_USER+14)
-#define IRQ_AMIGA_CIAA_TB      (IRQ_USER+15)
-#define IRQ_AMIGA_CIAA_ALRM    (IRQ_USER+16)
-#define IRQ_AMIGA_CIAA_SP      (IRQ_USER+17)
-#define IRQ_AMIGA_CIAA_FLG     (IRQ_USER+18)
-#define IRQ_AMIGA_CIAB         (IRQ_USER+19)
-#define IRQ_AMIGA_CIAB_TA      (IRQ_USER+19)
-#define IRQ_AMIGA_CIAB_TB      (IRQ_USER+20)
-#define IRQ_AMIGA_CIAB_ALRM    (IRQ_USER+21)
-#define IRQ_AMIGA_CIAB_SP      (IRQ_USER+22)
-#define IRQ_AMIGA_CIAB_FLG     (IRQ_USER+23)
-
+#define IRQ_AMIGA_CIAA      14
+#define IRQ_AMIGA_CIAA_TA   14
+#define IRQ_AMIGA_CIAA_TB   15
+#define IRQ_AMIGA_CIAA_ALRM 16
+#define IRQ_AMIGA_CIAA_SP   17
+#define IRQ_AMIGA_CIAA_FLG  18
+#define IRQ_AMIGA_CIAB      19
+#define IRQ_AMIGA_CIAB_TA   19
+#define IRQ_AMIGA_CIAB_TB   20
+#define IRQ_AMIGA_CIAB_ALRM 21
+#define IRQ_AMIGA_CIAB_SP   22
+#define IRQ_AMIGA_CIAB_FLG  23
+
+/* auto-vector interrupts */
+#define IRQ_AMIGA_AUTO      24
+#define IRQ_AMIGA_AUTO_0    24 /* This is just a dummy */
+#define IRQ_AMIGA_AUTO_1    25
+#define IRQ_AMIGA_AUTO_2    26
+#define IRQ_AMIGA_AUTO_3    27
+#define IRQ_AMIGA_AUTO_4    28
+#define IRQ_AMIGA_AUTO_5    29
+#define IRQ_AMIGA_AUTO_6    30
+#define IRQ_AMIGA_AUTO_7    31
+
+#define IRQ_FLOPPY         IRQ_AMIGA_DSKBLK
 
 /* INTREQR masks */
+#define IRQ1_MASK   0x0007     /* INTREQR mask for IRQ 1 */
+#define IRQ2_MASK   0x0008     /* INTREQR mask for IRQ 2 */
+#define IRQ3_MASK   0x0070     /* INTREQR mask for IRQ 3 */
+#define IRQ4_MASK   0x0780     /* INTREQR mask for IRQ 4 */
+#define IRQ5_MASK   0x1800     /* INTREQR mask for IRQ 5 */
+#define IRQ6_MASK   0x2000     /* INTREQR mask for IRQ 6 */
+#define IRQ7_MASK   0x4000     /* INTREQR mask for IRQ 7 */
+
 #define IF_SETCLR   0x8000      /* set/clr bit */
 #define IF_INTEN    0x4000     /* master interrupt bit in INT* registers */
 #define IF_EXTER    0x2000     /* external level 6 and CIA B interrupt */
 #define IF_DSKBLK   0x0002     /* diskblock DMA finished */
 #define IF_TBE     0x0001      /* serial transmit buffer empty interrupt */
 
+extern void amiga_do_irq(int irq, struct pt_regs *fp);
+extern void amiga_do_irq_list(int irq, struct pt_regs *fp);
+
 /* CIA interrupt control register bits */
 
 #define CIA_ICR_TA     0x01
 
 extern struct ciabase ciaa_base, ciab_base;
 
-extern void cia_init_IRQ(struct ciabase *base);
 extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask);
 extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask);