1*49148020SSam Ravnborg /* 2*49148020SSam Ravnborg ** amigaints.h -- Amiga Linux interrupt handling structs and prototypes 3*49148020SSam Ravnborg ** 4*49148020SSam Ravnborg ** Copyright 1992 by Greg Harp 5*49148020SSam Ravnborg ** 6*49148020SSam Ravnborg ** This file is subject to the terms and conditions of the GNU General Public 7*49148020SSam Ravnborg ** License. See the file COPYING in the main directory of this archive 8*49148020SSam Ravnborg ** for more details. 9*49148020SSam Ravnborg ** 10*49148020SSam Ravnborg ** Created 10/2/92 by Greg Harp 11*49148020SSam Ravnborg */ 12*49148020SSam Ravnborg 13*49148020SSam Ravnborg #ifndef _ASMm68k_AMIGAINTS_H_ 14*49148020SSam Ravnborg #define _ASMm68k_AMIGAINTS_H_ 15*49148020SSam Ravnborg 16*49148020SSam Ravnborg #include <asm/irq.h> 17*49148020SSam Ravnborg 18*49148020SSam Ravnborg /* 19*49148020SSam Ravnborg ** Amiga Interrupt sources. 20*49148020SSam Ravnborg ** 21*49148020SSam Ravnborg */ 22*49148020SSam Ravnborg 23*49148020SSam Ravnborg #define AUTO_IRQS (8) 24*49148020SSam Ravnborg #define AMI_STD_IRQS (14) 25*49148020SSam Ravnborg #define CIA_IRQS (5) 26*49148020SSam Ravnborg #define AMI_IRQS (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */ 27*49148020SSam Ravnborg 28*49148020SSam Ravnborg /* builtin serial port interrupts */ 29*49148020SSam Ravnborg #define IRQ_AMIGA_TBE (IRQ_USER+0) 30*49148020SSam Ravnborg #define IRQ_AMIGA_RBF (IRQ_USER+11) 31*49148020SSam Ravnborg 32*49148020SSam Ravnborg /* floppy disk interrupts */ 33*49148020SSam Ravnborg #define IRQ_AMIGA_DSKBLK (IRQ_USER+1) 34*49148020SSam Ravnborg #define IRQ_AMIGA_DSKSYN (IRQ_USER+12) 35*49148020SSam Ravnborg 36*49148020SSam Ravnborg /* software interrupts */ 37*49148020SSam Ravnborg #define IRQ_AMIGA_SOFT (IRQ_USER+2) 38*49148020SSam Ravnborg 39*49148020SSam Ravnborg /* interrupts from external hardware */ 40*49148020SSam Ravnborg #define IRQ_AMIGA_PORTS IRQ_AUTO_2 41*49148020SSam Ravnborg #define IRQ_AMIGA_EXTER IRQ_AUTO_6 42*49148020SSam Ravnborg 43*49148020SSam Ravnborg /* copper interrupt */ 44*49148020SSam Ravnborg #define IRQ_AMIGA_COPPER (IRQ_USER+4) 45*49148020SSam Ravnborg 46*49148020SSam Ravnborg /* vertical blanking interrupt */ 47*49148020SSam Ravnborg #define IRQ_AMIGA_VERTB (IRQ_USER+5) 48*49148020SSam Ravnborg 49*49148020SSam Ravnborg /* Blitter done interrupt */ 50*49148020SSam Ravnborg #define IRQ_AMIGA_BLIT (IRQ_USER+6) 51*49148020SSam Ravnborg 52*49148020SSam Ravnborg /* Audio interrupts */ 53*49148020SSam Ravnborg #define IRQ_AMIGA_AUD0 (IRQ_USER+7) 54*49148020SSam Ravnborg #define IRQ_AMIGA_AUD1 (IRQ_USER+8) 55*49148020SSam Ravnborg #define IRQ_AMIGA_AUD2 (IRQ_USER+9) 56*49148020SSam Ravnborg #define IRQ_AMIGA_AUD3 (IRQ_USER+10) 57*49148020SSam Ravnborg 58*49148020SSam Ravnborg /* CIA interrupt sources */ 59*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA (IRQ_USER+14) 60*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA_TA (IRQ_USER+14) 61*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA_TB (IRQ_USER+15) 62*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA_ALRM (IRQ_USER+16) 63*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA_SP (IRQ_USER+17) 64*49148020SSam Ravnborg #define IRQ_AMIGA_CIAA_FLG (IRQ_USER+18) 65*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB (IRQ_USER+19) 66*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB_TA (IRQ_USER+19) 67*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB_TB (IRQ_USER+20) 68*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB_ALRM (IRQ_USER+21) 69*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB_SP (IRQ_USER+22) 70*49148020SSam Ravnborg #define IRQ_AMIGA_CIAB_FLG (IRQ_USER+23) 71*49148020SSam Ravnborg 72*49148020SSam Ravnborg 73*49148020SSam Ravnborg /* INTREQR masks */ 74*49148020SSam Ravnborg #define IF_SETCLR 0x8000 /* set/clr bit */ 75*49148020SSam Ravnborg #define IF_INTEN 0x4000 /* master interrupt bit in INT* registers */ 76*49148020SSam Ravnborg #define IF_EXTER 0x2000 /* external level 6 and CIA B interrupt */ 77*49148020SSam Ravnborg #define IF_DSKSYN 0x1000 /* disk sync interrupt */ 78*49148020SSam Ravnborg #define IF_RBF 0x0800 /* serial receive buffer full interrupt */ 79*49148020SSam Ravnborg #define IF_AUD3 0x0400 /* audio channel 3 done interrupt */ 80*49148020SSam Ravnborg #define IF_AUD2 0x0200 /* audio channel 2 done interrupt */ 81*49148020SSam Ravnborg #define IF_AUD1 0x0100 /* audio channel 1 done interrupt */ 82*49148020SSam Ravnborg #define IF_AUD0 0x0080 /* audio channel 0 done interrupt */ 83*49148020SSam Ravnborg #define IF_BLIT 0x0040 /* blitter done interrupt */ 84*49148020SSam Ravnborg #define IF_VERTB 0x0020 /* vertical blanking interrupt */ 85*49148020SSam Ravnborg #define IF_COPER 0x0010 /* copper interrupt */ 86*49148020SSam Ravnborg #define IF_PORTS 0x0008 /* external level 2 and CIA A interrupt */ 87*49148020SSam Ravnborg #define IF_SOFT 0x0004 /* software initiated interrupt */ 88*49148020SSam Ravnborg #define IF_DSKBLK 0x0002 /* diskblock DMA finished */ 89*49148020SSam Ravnborg #define IF_TBE 0x0001 /* serial transmit buffer empty interrupt */ 90*49148020SSam Ravnborg 91*49148020SSam Ravnborg /* CIA interrupt control register bits */ 92*49148020SSam Ravnborg 93*49148020SSam Ravnborg #define CIA_ICR_TA 0x01 94*49148020SSam Ravnborg #define CIA_ICR_TB 0x02 95*49148020SSam Ravnborg #define CIA_ICR_ALRM 0x04 96*49148020SSam Ravnborg #define CIA_ICR_SP 0x08 97*49148020SSam Ravnborg #define CIA_ICR_FLG 0x10 98*49148020SSam Ravnborg #define CIA_ICR_ALL 0x1f 99*49148020SSam Ravnborg #define CIA_ICR_SETCLR 0x80 100*49148020SSam Ravnborg 101*49148020SSam Ravnborg extern void amiga_init_IRQ(void); 102*49148020SSam Ravnborg 103*49148020SSam Ravnborg /* to access the interrupt control registers of CIA's use only 104*49148020SSam Ravnborg ** these functions, they behave exactly like the amiga os routines 105*49148020SSam Ravnborg */ 106*49148020SSam Ravnborg 107*49148020SSam Ravnborg extern struct ciabase ciaa_base, ciab_base; 108*49148020SSam Ravnborg 109*49148020SSam Ravnborg extern void cia_init_IRQ(struct ciabase *base); 110*49148020SSam Ravnborg extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask); 111*49148020SSam Ravnborg extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask); 112*49148020SSam Ravnborg 113*49148020SSam Ravnborg #endif /* asm-m68k/amigaints.h */ 114