diff options
author | Adrian Bunk <bunk@kernel.org> | 2008-08-31 23:59:37 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-31 23:59:37 -0400 |
commit | 5110bd21b8af4199b8332c0ab0b23367556653d3 (patch) | |
tree | fcd655bb454ee7b0382aa200d9a2e160465ac6ae /arch/sparc/kernel/sun4c_irq.c | |
parent | b69416b51be0757c82f1c5a0a3f0995a4484dab4 (diff) |
sparc: remove CONFIG_SUN4
While doing some easy cleanups on the sparc code I noticed that the
CONFIG_SUN4 code seems to be worse than the rest - there were some
"I don't know how it should work, but the current code definitely cannot
work." places.
And while I have seen people running Linux on machines like a
SPARCstation 5 a few years ago I don't recall having seen sun4
machines, even less ones running Linux.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/sun4c_irq.c')
-rw-r--r-- | arch/sparc/kernel/sun4c_irq.c | 58 |
1 files changed, 17 insertions, 41 deletions
diff --git a/arch/sparc/kernel/sun4c_irq.c b/arch/sparc/kernel/sun4c_irq.c index a74582455cce..722d2516f284 100644 --- a/arch/sparc/kernel/sun4c_irq.c +++ b/arch/sparc/kernel/sun4c_irq.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/traps.h> | 33 | #include <asm/traps.h> |
34 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
35 | #include <asm/io.h> | 35 | #include <asm/io.h> |
36 | #include <asm/sun4paddr.h> | ||
37 | #include <asm/idprom.h> | 36 | #include <asm/idprom.h> |
38 | #include <asm/machines.h> | 37 | #include <asm/machines.h> |
39 | 38 | ||
@@ -130,22 +129,10 @@ static void sun4c_enable_irq(unsigned int irq_nr) | |||
130 | 129 | ||
131 | volatile struct sun4c_timer_info *sun4c_timers; | 130 | volatile struct sun4c_timer_info *sun4c_timers; |
132 | 131 | ||
133 | #ifdef CONFIG_SUN4 | ||
134 | /* This is an ugly hack to work around the | ||
135 | current timer code, and make it work with | ||
136 | the sun4/260 intersil | ||
137 | */ | ||
138 | volatile struct sun4c_timer_info sun4_timer; | ||
139 | #endif | ||
140 | |||
141 | static void sun4c_clear_clock_irq(void) | 132 | static void sun4c_clear_clock_irq(void) |
142 | { | 133 | { |
143 | volatile unsigned int clear_intr; | 134 | volatile unsigned int clear_intr; |
144 | #ifdef CONFIG_SUN4 | 135 | |
145 | if (idprom->id_machtype == (SM_SUN4 | SM_4_260)) | ||
146 | clear_intr = sun4_timer.timer_limit10; | ||
147 | else | ||
148 | #endif | ||
149 | clear_intr = sun4c_timers->timer_limit10; | 136 | clear_intr = sun4c_timers->timer_limit10; |
150 | } | 137 | } |
151 | 138 | ||
@@ -166,11 +153,6 @@ static void __init sun4c_init_timers(irq_handler_t counter_fn) | |||
166 | /* Map the Timer chip, this is implemented in hardware inside | 153 | /* Map the Timer chip, this is implemented in hardware inside |
167 | * the cache chip on the sun4c. | 154 | * the cache chip on the sun4c. |
168 | */ | 155 | */ |
169 | #ifdef CONFIG_SUN4 | ||
170 | if (idprom->id_machtype == (SM_SUN4 | SM_4_260)) | ||
171 | sun4c_timers = &sun4_timer; | ||
172 | else | ||
173 | #endif | ||
174 | sun4c_timers = ioremap(SUN_TIMER_PHYSADDR, | 156 | sun4c_timers = ioremap(SUN_TIMER_PHYSADDR, |
175 | sizeof(struct sun4c_timer_info)); | 157 | sizeof(struct sun4c_timer_info)); |
176 | 158 | ||
@@ -206,28 +188,22 @@ void __init sun4c_init_IRQ(void) | |||
206 | { | 188 | { |
207 | struct linux_prom_registers int_regs[2]; | 189 | struct linux_prom_registers int_regs[2]; |
208 | int ie_node; | 190 | int ie_node; |
209 | 191 | struct resource phyres; | |
210 | if (ARCH_SUN4) { | 192 | |
211 | interrupt_enable = (char *) | 193 | ie_node = prom_searchsiblings (prom_getchild(prom_root_node), |
212 | ioremap(sun4_ie_physaddr, PAGE_SIZE); | 194 | "interrupt-enable"); |
213 | } else { | 195 | if(ie_node == 0) |
214 | struct resource phyres; | 196 | panic("Cannot find /interrupt-enable node"); |
215 | 197 | ||
216 | ie_node = prom_searchsiblings (prom_getchild(prom_root_node), | 198 | /* Depending on the "address" property is bad news... */ |
217 | "interrupt-enable"); | 199 | interrupt_enable = NULL; |
218 | if(ie_node == 0) | 200 | if (prom_getproperty(ie_node, "reg", (char *) int_regs, |
219 | panic("Cannot find /interrupt-enable node"); | 201 | sizeof(int_regs)) != -1) { |
220 | 202 | memset(&phyres, 0, sizeof(struct resource)); | |
221 | /* Depending on the "address" property is bad news... */ | 203 | phyres.flags = int_regs[0].which_io; |
222 | interrupt_enable = NULL; | 204 | phyres.start = int_regs[0].phys_addr; |
223 | if (prom_getproperty(ie_node, "reg", (char *) int_regs, | 205 | interrupt_enable = (char *) of_ioremap(&phyres, 0, |
224 | sizeof(int_regs)) != -1) { | 206 | int_regs[0].reg_size, "sun4c_intr"); |
225 | memset(&phyres, 0, sizeof(struct resource)); | ||
226 | phyres.flags = int_regs[0].which_io; | ||
227 | phyres.start = int_regs[0].phys_addr; | ||
228 | interrupt_enable = (char *) of_ioremap(&phyres, 0, | ||
229 | int_regs[0].reg_size, "sun4c_intr"); | ||
230 | } | ||
231 | } | 207 | } |
232 | if (!interrupt_enable) | 208 | if (!interrupt_enable) |
233 | panic("Cannot map interrupt_enable"); | 209 | panic("Cannot map interrupt_enable"); |