home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-m68k / amigaints.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.5 KB  |  114 lines

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