aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/sun4c_irq.c
diff options
context:
space:
mode:
authorAdrian Bunk <bunk@kernel.org>2008-08-31 23:59:37 -0400
committerDavid S. Miller <davem@davemloft.net>2008-08-31 23:59:37 -0400
commit5110bd21b8af4199b8332c0ab0b23367556653d3 (patch)
treefcd655bb454ee7b0382aa200d9a2e160465ac6ae /arch/sparc/kernel/sun4c_irq.c
parentb69416b51be0757c82f1c5a0a3f0995a4484dab4 (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.c58
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
131volatile struct sun4c_timer_info *sun4c_timers; 130volatile 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 */
138volatile struct sun4c_timer_info sun4_timer;
139#endif
140
141static void sun4c_clear_clock_irq(void) 132static 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");