amigaints.h 3.5 KB

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