Path: blob/master/arch/m68k/include/asm/amigaints.h
10820 views
/*1** amigaints.h -- Amiga Linux interrupt handling structs and prototypes2**3** Copyright 1992 by Greg Harp4**5** This file is subject to the terms and conditions of the GNU General Public6** License. See the file COPYING in the main directory of this archive7** for more details.8**9** Created 10/2/92 by Greg Harp10*/1112#ifndef _ASMm68k_AMIGAINTS_H_13#define _ASMm68k_AMIGAINTS_H_1415#include <asm/irq.h>1617/*18** Amiga Interrupt sources.19**20*/2122#define AUTO_IRQS (8)23#define AMI_STD_IRQS (14)24#define CIA_IRQS (5)25#define AMI_IRQS (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */2627/* builtin serial port interrupts */28#define IRQ_AMIGA_TBE (IRQ_USER+0)29#define IRQ_AMIGA_RBF (IRQ_USER+11)3031/* floppy disk interrupts */32#define IRQ_AMIGA_DSKBLK (IRQ_USER+1)33#define IRQ_AMIGA_DSKSYN (IRQ_USER+12)3435/* software interrupts */36#define IRQ_AMIGA_SOFT (IRQ_USER+2)3738/* interrupts from external hardware */39#define IRQ_AMIGA_PORTS IRQ_AUTO_240#define IRQ_AMIGA_EXTER IRQ_AUTO_64142/* copper interrupt */43#define IRQ_AMIGA_COPPER (IRQ_USER+4)4445/* vertical blanking interrupt */46#define IRQ_AMIGA_VERTB (IRQ_USER+5)4748/* Blitter done interrupt */49#define IRQ_AMIGA_BLIT (IRQ_USER+6)5051/* Audio interrupts */52#define IRQ_AMIGA_AUD0 (IRQ_USER+7)53#define IRQ_AMIGA_AUD1 (IRQ_USER+8)54#define IRQ_AMIGA_AUD2 (IRQ_USER+9)55#define IRQ_AMIGA_AUD3 (IRQ_USER+10)5657/* CIA interrupt sources */58#define IRQ_AMIGA_CIAA (IRQ_USER+14)59#define IRQ_AMIGA_CIAA_TA (IRQ_USER+14)60#define IRQ_AMIGA_CIAA_TB (IRQ_USER+15)61#define IRQ_AMIGA_CIAA_ALRM (IRQ_USER+16)62#define IRQ_AMIGA_CIAA_SP (IRQ_USER+17)63#define IRQ_AMIGA_CIAA_FLG (IRQ_USER+18)64#define IRQ_AMIGA_CIAB (IRQ_USER+19)65#define IRQ_AMIGA_CIAB_TA (IRQ_USER+19)66#define IRQ_AMIGA_CIAB_TB (IRQ_USER+20)67#define IRQ_AMIGA_CIAB_ALRM (IRQ_USER+21)68#define IRQ_AMIGA_CIAB_SP (IRQ_USER+22)69#define IRQ_AMIGA_CIAB_FLG (IRQ_USER+23)707172/* INTREQR masks */73#define IF_SETCLR 0x8000 /* set/clr bit */74#define IF_INTEN 0x4000 /* master interrupt bit in INT* registers */75#define IF_EXTER 0x2000 /* external level 6 and CIA B interrupt */76#define IF_DSKSYN 0x1000 /* disk sync interrupt */77#define IF_RBF 0x0800 /* serial receive buffer full interrupt */78#define IF_AUD3 0x0400 /* audio channel 3 done interrupt */79#define IF_AUD2 0x0200 /* audio channel 2 done interrupt */80#define IF_AUD1 0x0100 /* audio channel 1 done interrupt */81#define IF_AUD0 0x0080 /* audio channel 0 done interrupt */82#define IF_BLIT 0x0040 /* blitter done interrupt */83#define IF_VERTB 0x0020 /* vertical blanking interrupt */84#define IF_COPER 0x0010 /* copper interrupt */85#define IF_PORTS 0x0008 /* external level 2 and CIA A interrupt */86#define IF_SOFT 0x0004 /* software initiated interrupt */87#define IF_DSKBLK 0x0002 /* diskblock DMA finished */88#define IF_TBE 0x0001 /* serial transmit buffer empty interrupt */8990/* CIA interrupt control register bits */9192#define CIA_ICR_TA 0x0193#define CIA_ICR_TB 0x0294#define CIA_ICR_ALRM 0x0495#define CIA_ICR_SP 0x0896#define CIA_ICR_FLG 0x1097#define CIA_ICR_ALL 0x1f98#define CIA_ICR_SETCLR 0x8099100extern void amiga_init_IRQ(void);101102/* to access the interrupt control registers of CIA's use only103** these functions, they behave exactly like the amiga os routines104*/105106extern struct ciabase ciaa_base, ciab_base;107108extern void cia_init_IRQ(struct ciabase *base);109extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask);110extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask);111112#endif /* asm-m68k/amigaints.h */113114115