Commit | Line | Data |
---|---|---|
3ddc7e26 GU |
1 | #ifndef _M68K_IRQ_H_ |
2 | #define _M68K_IRQ_H_ | |
3 | ||
4 | /* | |
5 | * This should be the same as the max(NUM_X_SOURCES) for all the | |
6 | * different m68k hosts compiled into the kernel. | |
7 | * Currently the Atari has 72 and the Amiga 24, but if both are | |
8 | * supported in the kernel it is better to make room for 72. | |
9 | */ | |
10 | #if defined(CONFIG_COLDFIRE) | |
11 | #define NR_IRQS 256 | |
12 | #elif defined(CONFIG_VME) || defined(CONFIG_SUN3) || defined(CONFIG_SUN3X) | |
13 | #define NR_IRQS 200 | |
14 | #elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) | |
15 | #define NR_IRQS 72 | |
16 | #elif defined(CONFIG_Q40) | |
17 | #define NR_IRQS 43 | |
18 | #elif defined(CONFIG_AMIGA) || !defined(CONFIG_MMU) | |
19 | #define NR_IRQS 32 | |
20 | #elif defined(CONFIG_APOLLO) | |
21 | #define NR_IRQS 24 | |
22 | #elif defined(CONFIG_HP300) | |
23 | #define NR_IRQS 8 | |
49148020 | 24 | #else |
3ddc7e26 | 25 | #define NR_IRQS 0 |
49148020 | 26 | #endif |
3ddc7e26 GU |
27 | |
28 | #ifdef CONFIG_MMU | |
29 | ||
3ddc7e26 GU |
30 | /* |
31 | * Interrupt source definitions | |
32 | * General interrupt sources are the level 1-7. | |
33 | * Adding an interrupt service routine for one of these sources | |
34 | * results in the addition of that routine to a chain of routines. | |
35 | * Each one is called in succession. Each individual interrupt | |
36 | * service routine should determine if the device associated with | |
37 | * that routine requires service. | |
38 | */ | |
39 | ||
40 | #define IRQ_SPURIOUS 0 | |
41 | ||
42 | #define IRQ_AUTO_1 1 /* level 1 interrupt */ | |
43 | #define IRQ_AUTO_2 2 /* level 2 interrupt */ | |
44 | #define IRQ_AUTO_3 3 /* level 3 interrupt */ | |
45 | #define IRQ_AUTO_4 4 /* level 4 interrupt */ | |
46 | #define IRQ_AUTO_5 5 /* level 5 interrupt */ | |
47 | #define IRQ_AUTO_6 6 /* level 6 interrupt */ | |
48 | #define IRQ_AUTO_7 7 /* level 7 interrupt (non-maskable) */ | |
49 | ||
50 | #define IRQ_USER 8 | |
51 | ||
3ddc7e26 GU |
52 | /* |
53 | * various flags for request_irq() - the Amiga now uses the standard | |
54 | * mechanism like all other architectures - IRQF_DISABLED and | |
55 | * IRQF_SHARED are your friends. | |
56 | */ | |
57 | #ifndef MACH_AMIGA_ONLY | |
58 | #define IRQ_FLG_LOCK (0x0001) /* handler is not replaceable */ | |
59 | #define IRQ_FLG_REPLACE (0x0002) /* replace existing handler */ | |
60 | #define IRQ_FLG_FAST (0x0004) | |
61 | #define IRQ_FLG_SLOW (0x0008) | |
62 | #define IRQ_FLG_STD (0x8000) /* internally used */ | |
63 | #endif | |
64 | ||
4936f63c GU |
65 | struct irq_data; |
66 | struct irq_chip; | |
67 | struct irq_desc; | |
68 | extern unsigned int m68k_irq_startup(struct irq_data *data); | |
69 | extern unsigned int m68k_irq_startup_irq(unsigned int irq); | |
70 | extern void m68k_irq_shutdown(struct irq_data *data); | |
71 | extern void m68k_setup_auto_interrupt(void (*handler)(unsigned int, | |
72 | struct pt_regs *)); | |
f30a6484 | 73 | extern void m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt); |
4936f63c GU |
74 | extern void m68k_setup_irq_controller(struct irq_chip *, |
75 | void (*handle)(unsigned int irq, | |
76 | struct irq_desc *desc), | |
77 | unsigned int irq, unsigned int cnt); | |
78 | ||
4936f63c GU |
79 | extern unsigned int irq_canonicalize(unsigned int irq); |
80 | ||
3ddc7e26 GU |
81 | #else |
82 | #define irq_canonicalize(irq) (irq) | |
83 | #endif /* CONFIG_MMU */ | |
84 | ||
739735d5 | 85 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs); |
4936f63c | 86 | extern atomic_t irq_err_count; |
739735d5 | 87 | |
3ddc7e26 | 88 | #endif /* _M68K_IRQ_H_ */ |