149148020SSam Ravnborg /* 249148020SSam Ravnborg ** amigaints.h -- Amiga Linux interrupt handling structs and prototypes 349148020SSam Ravnborg ** 449148020SSam Ravnborg ** Copyright 1992 by Greg Harp 549148020SSam Ravnborg ** 649148020SSam Ravnborg ** This file is subject to the terms and conditions of the GNU General Public 749148020SSam Ravnborg ** License. See the file COPYING in the main directory of this archive 849148020SSam Ravnborg ** for more details. 949148020SSam Ravnborg ** 1049148020SSam Ravnborg ** Created 10/2/92 by Greg Harp 1149148020SSam Ravnborg */ 1249148020SSam Ravnborg 1349148020SSam Ravnborg #ifndef _ASMm68k_AMIGAINTS_H_ 1449148020SSam Ravnborg #define _ASMm68k_AMIGAINTS_H_ 1549148020SSam Ravnborg 1649148020SSam Ravnborg #include <asm/irq.h> 1749148020SSam Ravnborg 1849148020SSam Ravnborg /* 1949148020SSam Ravnborg ** Amiga Interrupt sources. 2049148020SSam Ravnborg ** 2149148020SSam Ravnborg */ 2249148020SSam Ravnborg 2349148020SSam Ravnborg #define AUTO_IRQS (8) 2449148020SSam Ravnborg #define AMI_STD_IRQS (14) 2549148020SSam Ravnborg #define CIA_IRQS (5) 2649148020SSam Ravnborg #define AMI_IRQS (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */ 2749148020SSam Ravnborg 2849148020SSam Ravnborg /* builtin serial port interrupts */ 2949148020SSam Ravnborg #define IRQ_AMIGA_TBE (IRQ_USER+0) 3049148020SSam Ravnborg #define IRQ_AMIGA_RBF (IRQ_USER+11) 3149148020SSam Ravnborg 3249148020SSam Ravnborg /* floppy disk interrupts */ 3349148020SSam Ravnborg #define IRQ_AMIGA_DSKBLK (IRQ_USER+1) 3449148020SSam Ravnborg #define IRQ_AMIGA_DSKSYN (IRQ_USER+12) 3549148020SSam Ravnborg 3649148020SSam Ravnborg /* software interrupts */ 3749148020SSam Ravnborg #define IRQ_AMIGA_SOFT (IRQ_USER+2) 3849148020SSam Ravnborg 3949148020SSam Ravnborg /* interrupts from external hardware */ 4049148020SSam Ravnborg #define IRQ_AMIGA_PORTS IRQ_AUTO_2 4149148020SSam Ravnborg #define IRQ_AMIGA_EXTER IRQ_AUTO_6 4249148020SSam Ravnborg 4349148020SSam Ravnborg /* copper interrupt */ 4449148020SSam Ravnborg #define IRQ_AMIGA_COPPER (IRQ_USER+4) 4549148020SSam Ravnborg 4649148020SSam Ravnborg /* vertical blanking interrupt */ 4749148020SSam Ravnborg #define IRQ_AMIGA_VERTB (IRQ_USER+5) 4849148020SSam Ravnborg 4949148020SSam Ravnborg /* Blitter done interrupt */ 5049148020SSam Ravnborg #define IRQ_AMIGA_BLIT (IRQ_USER+6) 5149148020SSam Ravnborg 5249148020SSam Ravnborg /* Audio interrupts */ 5349148020SSam Ravnborg #define IRQ_AMIGA_AUD0 (IRQ_USER+7) 5449148020SSam Ravnborg #define IRQ_AMIGA_AUD1 (IRQ_USER+8) 5549148020SSam Ravnborg #define IRQ_AMIGA_AUD2 (IRQ_USER+9) 5649148020SSam Ravnborg #define IRQ_AMIGA_AUD3 (IRQ_USER+10) 5749148020SSam Ravnborg 5849148020SSam Ravnborg /* CIA interrupt sources */ 5949148020SSam Ravnborg #define IRQ_AMIGA_CIAA (IRQ_USER+14) 6049148020SSam Ravnborg #define IRQ_AMIGA_CIAA_TA (IRQ_USER+14) 6149148020SSam Ravnborg #define IRQ_AMIGA_CIAA_TB (IRQ_USER+15) 6249148020SSam Ravnborg #define IRQ_AMIGA_CIAA_ALRM (IRQ_USER+16) 6349148020SSam Ravnborg #define IRQ_AMIGA_CIAA_SP (IRQ_USER+17) 6449148020SSam Ravnborg #define IRQ_AMIGA_CIAA_FLG (IRQ_USER+18) 6549148020SSam Ravnborg #define IRQ_AMIGA_CIAB (IRQ_USER+19) 6649148020SSam Ravnborg #define IRQ_AMIGA_CIAB_TA (IRQ_USER+19) 6749148020SSam Ravnborg #define IRQ_AMIGA_CIAB_TB (IRQ_USER+20) 6849148020SSam Ravnborg #define IRQ_AMIGA_CIAB_ALRM (IRQ_USER+21) 6949148020SSam Ravnborg #define IRQ_AMIGA_CIAB_SP (IRQ_USER+22) 7049148020SSam Ravnborg #define IRQ_AMIGA_CIAB_FLG (IRQ_USER+23) 7149148020SSam Ravnborg 7249148020SSam Ravnborg 7349148020SSam Ravnborg /* INTREQR masks */ 7449148020SSam Ravnborg #define IF_SETCLR 0x8000 /* set/clr bit */ 7549148020SSam Ravnborg #define IF_INTEN 0x4000 /* master interrupt bit in INT* registers */ 7649148020SSam Ravnborg #define IF_EXTER 0x2000 /* external level 6 and CIA B interrupt */ 7749148020SSam Ravnborg #define IF_DSKSYN 0x1000 /* disk sync interrupt */ 7849148020SSam Ravnborg #define IF_RBF 0x0800 /* serial receive buffer full interrupt */ 7949148020SSam Ravnborg #define IF_AUD3 0x0400 /* audio channel 3 done interrupt */ 8049148020SSam Ravnborg #define IF_AUD2 0x0200 /* audio channel 2 done interrupt */ 8149148020SSam Ravnborg #define IF_AUD1 0x0100 /* audio channel 1 done interrupt */ 8249148020SSam Ravnborg #define IF_AUD0 0x0080 /* audio channel 0 done interrupt */ 8349148020SSam Ravnborg #define IF_BLIT 0x0040 /* blitter done interrupt */ 8449148020SSam Ravnborg #define IF_VERTB 0x0020 /* vertical blanking interrupt */ 8549148020SSam Ravnborg #define IF_COPER 0x0010 /* copper interrupt */ 8649148020SSam Ravnborg #define IF_PORTS 0x0008 /* external level 2 and CIA A interrupt */ 8749148020SSam Ravnborg #define IF_SOFT 0x0004 /* software initiated interrupt */ 8849148020SSam Ravnborg #define IF_DSKBLK 0x0002 /* diskblock DMA finished */ 8949148020SSam Ravnborg #define IF_TBE 0x0001 /* serial transmit buffer empty interrupt */ 9049148020SSam Ravnborg 9149148020SSam Ravnborg /* CIA interrupt control register bits */ 9249148020SSam Ravnborg 9349148020SSam Ravnborg #define CIA_ICR_TA 0x01 9449148020SSam Ravnborg #define CIA_ICR_TB 0x02 9549148020SSam Ravnborg #define CIA_ICR_ALRM 0x04 9649148020SSam Ravnborg #define CIA_ICR_SP 0x08 9749148020SSam Ravnborg #define CIA_ICR_FLG 0x10 9849148020SSam Ravnborg #define CIA_ICR_ALL 0x1f 9949148020SSam Ravnborg #define CIA_ICR_SETCLR 0x80 10049148020SSam Ravnborg 10149148020SSam Ravnborg extern void amiga_init_IRQ(void); 10249148020SSam Ravnborg 10349148020SSam Ravnborg /* to access the interrupt control registers of CIA's use only 10449148020SSam Ravnborg ** these functions, they behave exactly like the amiga os routines 10549148020SSam Ravnborg */ 10649148020SSam Ravnborg 10749148020SSam Ravnborg extern struct ciabase ciaa_base, ciab_base; 10849148020SSam Ravnborg 10949148020SSam Ravnborg extern void cia_init_IRQ(struct ciabase *base); 11049148020SSam Ravnborg extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask); 11149148020SSam Ravnborg extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask); 11249148020SSam Ravnborg 11349148020SSam Ravnborg #endif /* asm-m68k/amigaints.h */ 114