xref: /openbmc/linux/arch/m68k/include/asm/amigaints.h (revision e5451c8f8330e03ad3cfa16048b4daf961af434f)
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