Commit | Line | Data |
---|---|---|
eedbdab9 MS |
1 | /* |
2 | * Copyright (C) 2006 Atmark Techno, Inc. | |
3 | * | |
4 | * This file is subject to the terms and conditions of the GNU General Public | |
5 | * License. See the file "COPYING" in the main directory of this archive | |
6 | * for more details. | |
7 | */ | |
8 | ||
9 | #ifndef _ASM_MICROBLAZE_IRQ_H | |
10 | #define _ASM_MICROBLAZE_IRQ_H | |
11 | ||
12 | #define NR_IRQS 32 | |
0a584583 | 13 | #include <asm-generic/irq.h> |
eedbdab9 MS |
14 | |
15 | #include <linux/interrupt.h> | |
16 | ||
c6ba01a4 MS |
17 | /* This type is the placeholder for a hardware interrupt number. It has to |
18 | * be big enough to enclose whatever representation is used by a given | |
19 | * platform. | |
20 | */ | |
21 | typedef unsigned long irq_hw_number_t; | |
22 | ||
eedbdab9 MS |
23 | extern unsigned int nr_irq; |
24 | ||
25 | #define NO_IRQ (-1) | |
26 | ||
eedbdab9 MS |
27 | struct pt_regs; |
28 | extern void do_IRQ(struct pt_regs *regs); | |
29 | ||
c6ba01a4 MS |
30 | /** |
31 | * irq_of_parse_and_map - Parse and Map an interrupt into linux virq space | |
eedbdab9 MS |
32 | * @device: Device node of the device whose interrupt is to be mapped |
33 | * @index: Index of the interrupt to map | |
34 | * | |
35 | * This function is a wrapper that chains of_irq_map_one() and | |
36 | * irq_create_of_mapping() to make things easier to callers | |
37 | */ | |
38 | struct device_node; | |
39 | extern unsigned int irq_of_parse_and_map(struct device_node *dev, int index); | |
40 | ||
41 | /** FIXME - not implement | |
42 | * irq_dispose_mapping - Unmap an interrupt | |
43 | * @virq: linux virq number of the interrupt to unmap | |
44 | */ | |
45 | static inline void irq_dispose_mapping(unsigned int virq) | |
46 | { | |
47 | return; | |
48 | } | |
49 | ||
c6ba01a4 MS |
50 | struct irq_host; |
51 | ||
52 | /** | |
53 | * irq_create_mapping - Map a hardware interrupt into linux virq space | |
54 | * @host: host owning this hardware interrupt or NULL for default host | |
55 | * @hwirq: hardware irq number in that host space | |
56 | * | |
57 | * Only one mapping per hardware interrupt is permitted. Returns a linux | |
58 | * virq number. | |
59 | * If the sense/trigger is to be specified, set_irq_type() should be called | |
60 | * on the number returned from that call. | |
61 | */ | |
62 | extern unsigned int irq_create_mapping(struct irq_host *host, | |
63 | irq_hw_number_t hwirq); | |
64 | ||
65 | /** | |
66 | * irq_create_of_mapping - Map a hardware interrupt into linux virq space | |
67 | * @controller: Device node of the interrupt controller | |
68 | * @inspec: Interrupt specifier from the device-tree | |
69 | * @intsize: Size of the interrupt specifier from the device-tree | |
70 | * | |
71 | * This function is identical to irq_create_mapping except that it takes | |
72 | * as input informations straight from the device-tree (typically the results | |
73 | * of the of_irq_map_*() functions. | |
74 | */ | |
75 | extern unsigned int irq_create_of_mapping(struct device_node *controller, | |
76 | u32 *intspec, unsigned int intsize); | |
77 | ||
eedbdab9 | 78 | #endif /* _ASM_MICROBLAZE_IRQ_H */ |