home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-m68k / macints.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.4 KB  |  170 lines

  1. /*
  2. ** macints.h -- Macintosh Linux interrupt handling structs and prototypes
  3. **
  4. ** Copyright 1997 by Michael Schmitz
  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. */
  11.  
  12. #ifndef _ASM_MACINTS_H_
  13. #define _ASM_MACINTS_H_
  14.  
  15. #include <asm/irq.h>
  16.  
  17. /* Setting this prints debugging info for unclaimed interrupts */
  18.  
  19. #define DEBUG_SPURIOUS
  20.  
  21. /* Setting this prints debugging info on each autovector interrupt */
  22.  
  23. /* #define DEBUG_IRQS */
  24.  
  25. /* Setting this prints debugging info on each Nubus interrupt */
  26.  
  27. /* #define DEBUG_NUBUS_INT */
  28.  
  29. /* Setting this prints debugging info on irqs as they enabled and disabled. */
  30.  
  31. /* #define DEBUG_IRQUSE */
  32.  
  33. /*
  34.  * Base IRQ number for all Mac68K interrupt sources. Each source
  35.  * has eight indexes (base -> base+7).
  36.  */
  37.  
  38. #define VIA1_SOURCE_BASE    8
  39. #define VIA2_SOURCE_BASE    16
  40. #define MAC_SCC_SOURCE_BASE    24
  41. #define PSC3_SOURCE_BASE    24
  42. #define PSC4_SOURCE_BASE    32
  43. #define PSC5_SOURCE_BASE    40
  44. #define PSC6_SOURCE_BASE    48
  45. #define NUBUS_SOURCE_BASE    56
  46. #define BABOON_SOURCE_BASE    64
  47.  
  48. /*
  49.  * Maximum IRQ number is BABOON_SOURCE_BASE + 7,
  50.  * giving us IRQs up through 71
  51.  */
  52.  
  53. #define NUM_MAC_SOURCES        72
  54.  
  55. /*
  56.  * clean way to separate IRQ into its source and index
  57.  */
  58.  
  59. #define IRQ_SRC(irq)    (irq >> 3)
  60. #define    IRQ_IDX(irq)    (irq & 7)
  61.  
  62. #define    IRQ_SPURIOUS      (0)
  63.  
  64. /* auto-vector interrupts */
  65. #define IRQ_AUTO_1        (1)
  66. #define IRQ_AUTO_2        (2)
  67. #define IRQ_AUTO_3        (3)
  68. #define IRQ_AUTO_4        (4)
  69. #define IRQ_AUTO_5        (5)
  70. #define IRQ_AUTO_6        (6)
  71. #define IRQ_AUTO_7        (7)
  72.  
  73. /* VIA1 interrupts */
  74. #define IRQ_VIA1_0      (8)        /* one second int. */
  75. #define IRQ_VIA1_1        (9)        /* VBlank int. */
  76. #define IRQ_MAC_VBL      IRQ_VIA1_1
  77. #define IRQ_VIA1_2      (10)        /* ADB SR shifts complete */
  78. #define IRQ_MAC_ADB      IRQ_VIA1_2
  79. #define IRQ_MAC_ADB_SR      IRQ_VIA1_2
  80. #define IRQ_VIA1_3      (11)        /* ADB SR CB2 ?? */
  81. #define IRQ_MAC_ADB_SD      IRQ_VIA1_3
  82. #define IRQ_VIA1_4        (12)        /* ADB SR ext. clock pulse */
  83. #define IRQ_MAC_ADB_CL      IRQ_VIA1_4
  84. #define IRQ_VIA1_5      (13)
  85. #define IRQ_MAC_TIMER_2      IRQ_VIA1_5
  86. #define IRQ_VIA1_6      (14)
  87. #define IRQ_MAC_TIMER_1      IRQ_VIA1_6
  88. #define IRQ_VIA1_7        (15)
  89.  
  90. /* VIA2/RBV interrupts */
  91. #define IRQ_VIA2_0      (16)
  92. #define IRQ_MAC_SCSIDRQ      IRQ_VIA2_0
  93. #define IRQ_VIA2_1        (17)
  94. #define IRQ_MAC_NUBUS      IRQ_VIA2_1
  95. #define IRQ_VIA2_2      (18)
  96. #define IRQ_VIA2_3      (19)
  97. #define IRQ_MAC_SCSI      IRQ_VIA2_3
  98. #define IRQ_VIA2_4        (20)
  99. #define IRQ_VIA2_5      (21)
  100. #define IRQ_VIA2_6      (22)
  101. #define IRQ_VIA2_7        (23)
  102.  
  103. /* Level 3 (PSC, AV Macs only) interrupts */
  104. #define IRQ_PSC3_0      (24)
  105. #define IRQ_MAC_MACE      IRQ_PSC3_0
  106. #define IRQ_PSC3_1      (25)
  107. #define IRQ_PSC3_2      (26)
  108. #define IRQ_PSC3_3      (27)
  109.  
  110. /* Level 4 (SCC) interrupts */
  111. #define IRQ_SCC             (32)
  112. #define IRQ_SCCA         (33)
  113. #define IRQ_SCCB         (34)
  114. #if 0 /* FIXME: are there multiple interrupt conditions on the SCC ?? */
  115. /* SCC interrupts */
  116. #define IRQ_SCCB_TX         (32)
  117. #define IRQ_SCCB_STAT         (33)
  118. #define IRQ_SCCB_RX         (34)
  119. #define IRQ_SCCB_SPCOND         (35)
  120. #define IRQ_SCCA_TX         (36)
  121. #define IRQ_SCCA_STAT         (37)
  122. #define IRQ_SCCA_RX         (38)
  123. #define IRQ_SCCA_SPCOND         (39)
  124. #endif
  125.  
  126. /* Level 4 (PSC, AV Macs only) interrupts */
  127. #define IRQ_PSC4_0      (32)
  128. #define IRQ_PSC4_1      (33)
  129. #define IRQ_PSC4_2      (34)
  130. #define IRQ_PSC4_3      (35)
  131. #define IRQ_MAC_MACE_DMA  IRQ_PSC4_3
  132.  
  133. /* Level 5 (PSC, AV Macs only) interrupts */
  134. #define IRQ_PSC5_0      (40)
  135. #define IRQ_PSC5_1      (41)
  136. #define IRQ_PSC5_2      (42)
  137. #define IRQ_PSC5_3      (43)
  138.  
  139. /* Level 6 (PSC, AV Macs only) interrupts */
  140. #define IRQ_PSC6_0      (48)
  141. #define IRQ_PSC6_1      (49)
  142. #define IRQ_PSC6_2      (50)
  143. #define IRQ_PSC6_3      (51)
  144.  
  145. /* Nubus interrupts (cascaded to VIA2) */
  146. #define IRQ_NUBUS_9      (56)
  147. #define IRQ_NUBUS_A      (57)
  148. #define IRQ_NUBUS_B      (58)
  149. #define IRQ_NUBUS_C      (59)
  150. #define IRQ_NUBUS_D      (60)
  151. #define IRQ_NUBUS_E      (61)
  152. #define IRQ_NUBUS_F      (62)
  153.  
  154. /* Baboon interrupts (cascaded to nubus slot $C) */
  155. #define IRQ_BABOON_0      (64)
  156. #define IRQ_BABOON_1      (65)
  157. #define IRQ_BABOON_2      (66)
  158. #define IRQ_BABOON_3      (67)
  159.  
  160. #define SLOT2IRQ(x)      (x + 47)
  161. #define IRQ2SLOT(x)      (x - 47)
  162.  
  163. #define INT_CLK   24576        /* CLK while int_clk =2.456MHz and divide = 100 */
  164. #define INT_TICKS 246        /* to make sched_time = 99.902... HZ */
  165.  
  166. extern irq_node_t *mac_irq_list[NUM_MAC_SOURCES];
  167. extern void mac_do_irq_list(int irq, struct pt_regs *);
  168.  
  169. #endif /* asm/macints.h */
  170.