diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-11-01 12:08:36 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-11-29 20:14:46 -0500 |
commit | 1603b5aca4f15b34848fb5594d0c7b6333b99144 (patch) | |
tree | 79272aa41d6510b7256df62e287676885c3960cf /arch/mips/kernel/irq-mv6434x.c | |
parent | c87b6ebaea034c0e0ce86127870cf1511a307b64 (diff) |
[MIPS] IRQ cleanups
This is a big irq cleanup patch.
* Use set_irq_chip() to register irq_chip.
* Initialize .mask, .unmask, .mask_ack field. Functions for these
method are already exist in most case.
* Do not initialize .startup, .shutdown, .enable, .disable fields if
default routines provided by irq_chip_set_defaults() were suitable.
* Remove redundant irq_desc initializations.
* Remove unnecessary local_irq_save/local_irq_restore, spin_lock.
With this cleanup, it would be easy to switch to slightly lightwait
irq flow handlers (handle_level_irq(), etc.) instead of __do_IRQ().
Though whole this patch is quite large, changes in each irq_chip are
not quite simple. Please review and test on your platform. Thanks.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/irq-mv6434x.c')
-rw-r--r-- | arch/mips/kernel/irq-mv6434x.c | 53 |
1 files changed, 6 insertions, 47 deletions
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c index 37d106202b83..5012b9df1b5a 100644 --- a/arch/mips/kernel/irq-mv6434x.c +++ b/arch/mips/kernel/irq-mv6434x.c | |||
@@ -67,39 +67,6 @@ static inline void unmask_mv64340_irq(unsigned int irq) | |||
67 | } | 67 | } |
68 | 68 | ||
69 | /* | 69 | /* |
70 | * Enables the IRQ on Marvell Chip | ||
71 | */ | ||
72 | static void enable_mv64340_irq(unsigned int irq) | ||
73 | { | ||
74 | unmask_mv64340_irq(irq); | ||
75 | } | ||
76 | |||
77 | /* | ||
78 | * Initialize the IRQ on Marvell Chip | ||
79 | */ | ||
80 | static unsigned int startup_mv64340_irq(unsigned int irq) | ||
81 | { | ||
82 | unmask_mv64340_irq(irq); | ||
83 | return 0; | ||
84 | } | ||
85 | |||
86 | /* | ||
87 | * Disables the IRQ on Marvell Chip | ||
88 | */ | ||
89 | static void disable_mv64340_irq(unsigned int irq) | ||
90 | { | ||
91 | mask_mv64340_irq(irq); | ||
92 | } | ||
93 | |||
94 | /* | ||
95 | * Masks and ACKs an IRQ | ||
96 | */ | ||
97 | static void mask_and_ack_mv64340_irq(unsigned int irq) | ||
98 | { | ||
99 | mask_mv64340_irq(irq); | ||
100 | } | ||
101 | |||
102 | /* | ||
103 | * End IRQ processing | 70 | * End IRQ processing |
104 | */ | 71 | */ |
105 | static void end_mv64340_irq(unsigned int irq) | 72 | static void end_mv64340_irq(unsigned int irq) |
@@ -133,15 +100,12 @@ void ll_mv64340_irq(void) | |||
133 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32); | 100 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32); |
134 | } | 101 | } |
135 | 102 | ||
136 | #define shutdown_mv64340_irq disable_mv64340_irq | ||
137 | |||
138 | struct irq_chip mv64340_irq_type = { | 103 | struct irq_chip mv64340_irq_type = { |
139 | .typename = "MV-64340", | 104 | .typename = "MV-64340", |
140 | .startup = startup_mv64340_irq, | 105 | .ack = mask_mv64340_irq, |
141 | .shutdown = shutdown_mv64340_irq, | 106 | .mask = mask_mv64340_irq, |
142 | .enable = enable_mv64340_irq, | 107 | .mask_ack = mask_mv64340_irq, |
143 | .disable = disable_mv64340_irq, | 108 | .unmask = unmask_mv64340_irq, |
144 | .ack = mask_and_ack_mv64340_irq, | ||
145 | .end = end_mv64340_irq, | 109 | .end = end_mv64340_irq, |
146 | }; | 110 | }; |
147 | 111 | ||
@@ -149,13 +113,8 @@ void __init mv64340_irq_init(unsigned int base) | |||
149 | { | 113 | { |
150 | int i; | 114 | int i; |
151 | 115 | ||
152 | /* Reset irq handlers pointers to NULL */ | 116 | for (i = base; i < base + 64; i++) |
153 | for (i = base; i < base + 64; i++) { | 117 | set_irq_chip(i, &mv64340_irq_type); |
154 | irq_desc[i].status = IRQ_DISABLED; | ||
155 | irq_desc[i].action = 0; | ||
156 | irq_desc[i].depth = 2; | ||
157 | irq_desc[i].chip = &mv64340_irq_type; | ||
158 | } | ||
159 | 118 | ||
160 | irq_base = base; | 119 | irq_base = base; |
161 | } | 120 | } |