162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci** macints.h -- Macintosh Linux interrupt handling structs and prototypes
362306a36Sopenharmony_ci**
462306a36Sopenharmony_ci** Copyright 1997 by Michael Schmitz
562306a36Sopenharmony_ci**
662306a36Sopenharmony_ci** This file is subject to the terms and conditions of the GNU General Public
762306a36Sopenharmony_ci** License.  See the file COPYING in the main directory of this archive
862306a36Sopenharmony_ci** for more details.
962306a36Sopenharmony_ci**
1062306a36Sopenharmony_ci*/
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#ifndef _ASM_MACINTS_H_
1362306a36Sopenharmony_ci#define _ASM_MACINTS_H_
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <asm/irq.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Base IRQ number for all Mac68K interrupt sources. Each source
1962306a36Sopenharmony_ci * has eight indexes (base -> base+7).
2062306a36Sopenharmony_ci */
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define VIA1_SOURCE_BASE	8
2362306a36Sopenharmony_ci#define VIA2_SOURCE_BASE	16
2462306a36Sopenharmony_ci#define PSC3_SOURCE_BASE	24
2562306a36Sopenharmony_ci#define PSC4_SOURCE_BASE	32
2662306a36Sopenharmony_ci#define PSC5_SOURCE_BASE	40
2762306a36Sopenharmony_ci#define PSC6_SOURCE_BASE	48
2862306a36Sopenharmony_ci#define NUBUS_SOURCE_BASE	56
2962306a36Sopenharmony_ci#define BABOON_SOURCE_BASE	64
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/*
3262306a36Sopenharmony_ci * Maximum IRQ number is BABOON_SOURCE_BASE + 7,
3362306a36Sopenharmony_ci * giving us IRQs up through 71
3462306a36Sopenharmony_ci */
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci#define NUM_MAC_SOURCES		72
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci/*
3962306a36Sopenharmony_ci * clean way to separate IRQ into its source and index
4062306a36Sopenharmony_ci */
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#define IRQ_SRC(irq)	(irq >> 3)
4362306a36Sopenharmony_ci#define	IRQ_IDX(irq)	(irq & 7)
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/* VIA1 interrupts */
4662306a36Sopenharmony_ci#define IRQ_VIA1_0	  (8)		/* one second int. */
4762306a36Sopenharmony_ci#define IRQ_VIA1_1        (9)		/* VBlank int. */
4862306a36Sopenharmony_ci#define IRQ_MAC_VBL	  IRQ_VIA1_1
4962306a36Sopenharmony_ci#define IRQ_VIA1_2	  (10)		/* ADB SR shifts complete */
5062306a36Sopenharmony_ci#define IRQ_MAC_ADB	  IRQ_VIA1_2
5162306a36Sopenharmony_ci#define IRQ_MAC_ADB_SR	  IRQ_VIA1_2
5262306a36Sopenharmony_ci#define IRQ_VIA1_3	  (11)		/* ADB SR CB2 ?? */
5362306a36Sopenharmony_ci#define IRQ_MAC_ADB_SD	  IRQ_VIA1_3
5462306a36Sopenharmony_ci#define IRQ_VIA1_4        (12)		/* ADB SR ext. clock pulse */
5562306a36Sopenharmony_ci#define IRQ_MAC_ADB_CL	  IRQ_VIA1_4
5662306a36Sopenharmony_ci#define IRQ_VIA1_5	  (13)
5762306a36Sopenharmony_ci#define IRQ_MAC_TIMER_2	  IRQ_VIA1_5
5862306a36Sopenharmony_ci#define IRQ_VIA1_6	  (14)
5962306a36Sopenharmony_ci#define IRQ_MAC_TIMER_1	  IRQ_VIA1_6
6062306a36Sopenharmony_ci#define IRQ_VIA1_7        (15)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci/* VIA2/RBV interrupts */
6362306a36Sopenharmony_ci#define IRQ_VIA2_0	  (16)
6462306a36Sopenharmony_ci#define IRQ_MAC_SCSIDRQ	  IRQ_VIA2_0
6562306a36Sopenharmony_ci#define IRQ_VIA2_1        (17)
6662306a36Sopenharmony_ci#define IRQ_MAC_NUBUS	  IRQ_VIA2_1
6762306a36Sopenharmony_ci#define IRQ_VIA2_2	  (18)
6862306a36Sopenharmony_ci#define IRQ_VIA2_3	  (19)
6962306a36Sopenharmony_ci#define IRQ_MAC_SCSI	  IRQ_VIA2_3
7062306a36Sopenharmony_ci#define IRQ_VIA2_4        (20)
7162306a36Sopenharmony_ci#define IRQ_VIA2_5	  (21)
7262306a36Sopenharmony_ci#define IRQ_VIA2_6	  (22)
7362306a36Sopenharmony_ci#define IRQ_VIA2_7        (23)
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci/* Level 3 (PSC, AV Macs only) interrupts */
7662306a36Sopenharmony_ci#define IRQ_PSC3_0	  (24)
7762306a36Sopenharmony_ci#define IRQ_MAC_MACE	  IRQ_PSC3_0
7862306a36Sopenharmony_ci#define IRQ_PSC3_1	  (25)
7962306a36Sopenharmony_ci#define IRQ_PSC3_2	  (26)
8062306a36Sopenharmony_ci#define IRQ_PSC3_3	  (27)
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci/* Level 4 (PSC, AV Macs only) interrupts */
8362306a36Sopenharmony_ci#define IRQ_PSC4_0	  (32)
8462306a36Sopenharmony_ci#define IRQ_PSC4_1	  (33)
8562306a36Sopenharmony_ci#define IRQ_MAC_SCC_A	  IRQ_PSC4_1
8662306a36Sopenharmony_ci#define IRQ_PSC4_2	  (34)
8762306a36Sopenharmony_ci#define IRQ_MAC_SCC_B	  IRQ_PSC4_2
8862306a36Sopenharmony_ci#define IRQ_PSC4_3	  (35)
8962306a36Sopenharmony_ci#define IRQ_MAC_MACE_DMA  IRQ_PSC4_3
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci/* OSS Level 4 interrupts */
9262306a36Sopenharmony_ci#define IRQ_MAC_SCC	  (33)
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci/* Level 5 (PSC, AV Macs only) interrupts */
9562306a36Sopenharmony_ci#define IRQ_PSC5_0	  (40)
9662306a36Sopenharmony_ci#define IRQ_PSC5_1	  (41)
9762306a36Sopenharmony_ci#define IRQ_PSC5_2	  (42)
9862306a36Sopenharmony_ci#define IRQ_PSC5_3	  (43)
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci/* Level 6 (PSC, AV Macs only) interrupts */
10162306a36Sopenharmony_ci#define IRQ_PSC6_0	  (48)
10262306a36Sopenharmony_ci#define IRQ_PSC6_1	  (49)
10362306a36Sopenharmony_ci#define IRQ_PSC6_2	  (50)
10462306a36Sopenharmony_ci#define IRQ_PSC6_3	  (51)
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci/* Nubus interrupts (cascaded to VIA2) */
10762306a36Sopenharmony_ci#define IRQ_NUBUS_9	  (56)
10862306a36Sopenharmony_ci#define IRQ_NUBUS_A	  (57)
10962306a36Sopenharmony_ci#define IRQ_NUBUS_B	  (58)
11062306a36Sopenharmony_ci#define IRQ_NUBUS_C	  (59)
11162306a36Sopenharmony_ci#define IRQ_NUBUS_D	  (60)
11262306a36Sopenharmony_ci#define IRQ_NUBUS_E	  (61)
11362306a36Sopenharmony_ci#define IRQ_NUBUS_F	  (62)
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci/* Baboon interrupts (cascaded to nubus slot $C) */
11662306a36Sopenharmony_ci#define IRQ_BABOON_0	  (64)
11762306a36Sopenharmony_ci#define IRQ_BABOON_1	  (65)
11862306a36Sopenharmony_ci#define IRQ_BABOON_2	  (66)
11962306a36Sopenharmony_ci#define IRQ_BABOON_3	  (67)
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci#define SLOT2IRQ(x)	  (x + 47)
12262306a36Sopenharmony_ci#define IRQ2SLOT(x)	  (x - 47)
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci#endif /* asm/macints.h */
125