diff options
Diffstat (limited to 'arch/mips/sibyte/sb1250/irq.c')
-rw-r--r-- | arch/mips/sibyte/sb1250/irq.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index eac9065ffe0c..a5158483986e 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -57,16 +57,6 @@ static void sb1250_set_affinity(unsigned int irq, cpumask_t mask); | |||
57 | extern unsigned long ldt_eoi_space; | 57 | extern unsigned long ldt_eoi_space; |
58 | #endif | 58 | #endif |
59 | 59 | ||
60 | #ifdef CONFIG_KGDB | ||
61 | static int kgdb_irq; | ||
62 | |||
63 | /* Default to UART1 */ | ||
64 | int kgdb_port = 1; | ||
65 | #ifdef CONFIG_SERIAL_SB1250_DUART | ||
66 | extern char sb1250_duart_present[]; | ||
67 | #endif | ||
68 | #endif | ||
69 | |||
70 | static struct irq_chip sb1250_irq_type = { | 60 | static struct irq_chip sb1250_irq_type = { |
71 | .name = "SB1250-IMR", | 61 | .name = "SB1250-IMR", |
72 | .ack = ack_sb1250_irq, | 62 | .ack = ack_sb1250_irq, |
@@ -313,55 +303,10 @@ void __init arch_init_irq(void) | |||
313 | * does its own management of IP7. | 303 | * does its own management of IP7. |
314 | */ | 304 | */ |
315 | 305 | ||
316 | #ifdef CONFIG_KGDB | ||
317 | imask |= STATUSF_IP6; | ||
318 | #endif | ||
319 | /* Enable necessary IPs, disable the rest */ | 306 | /* Enable necessary IPs, disable the rest */ |
320 | change_c0_status(ST0_IM, imask); | 307 | change_c0_status(ST0_IM, imask); |
321 | |||
322 | #ifdef CONFIG_KGDB | ||
323 | if (kgdb_flag) { | ||
324 | kgdb_irq = K_INT_UART_0 + kgdb_port; | ||
325 | |||
326 | #ifdef CONFIG_SERIAL_SB1250_DUART | ||
327 | sb1250_duart_present[kgdb_port] = 0; | ||
328 | #endif | ||
329 | /* Setup uart 1 settings, mapper */ | ||
330 | __raw_writeq(M_DUART_IMR_BRK, | ||
331 | IOADDR(A_DUART_IMRREG(kgdb_port))); | ||
332 | |||
333 | __raw_writeq(IMR_IP6_VAL, | ||
334 | IOADDR(A_IMR_REGISTER(0, | ||
335 | R_IMR_INTERRUPT_MAP_BASE) + | ||
336 | (kgdb_irq << 3))); | ||
337 | sb1250_unmask_irq(0, kgdb_irq); | ||
338 | } | ||
339 | #endif | ||
340 | } | ||
341 | |||
342 | #ifdef CONFIG_KGDB | ||
343 | |||
344 | #include <linux/delay.h> | ||
345 | |||
346 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port, reg))) | ||
347 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port, reg))) | ||
348 | |||
349 | static void sb1250_kgdb_interrupt(void) | ||
350 | { | ||
351 | /* | ||
352 | * Clear break-change status (allow some time for the remote | ||
353 | * host to stop the break, since we would see another | ||
354 | * interrupt on the end-of-break too) | ||
355 | */ | ||
356 | kstat_this_cpu.irqs[kgdb_irq]++; | ||
357 | mdelay(500); | ||
358 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | ||
359 | M_DUART_RX_EN | M_DUART_TX_EN); | ||
360 | set_async_breakpoint(&get_irq_regs()->cp0_epc); | ||
361 | } | 308 | } |
362 | 309 | ||
363 | #endif /* CONFIG_KGDB */ | ||
364 | |||
365 | extern void sb1250_mailbox_interrupt(void); | 310 | extern void sb1250_mailbox_interrupt(void); |
366 | 311 | ||
367 | static inline void dispatch_ip2(void) | 312 | static inline void dispatch_ip2(void) |
@@ -407,11 +352,6 @@ asmlinkage void plat_irq_dispatch(void) | |||
407 | sb1250_mailbox_interrupt(); | 352 | sb1250_mailbox_interrupt(); |
408 | #endif | 353 | #endif |
409 | 354 | ||
410 | #ifdef CONFIG_KGDB | ||
411 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ | ||
412 | sb1250_kgdb_interrupt(); | ||
413 | #endif | ||
414 | |||
415 | else if (pending & CAUSEF_IP2) | 355 | else if (pending & CAUSEF_IP2) |
416 | dispatch_ip2(); | 356 | dispatch_ip2(); |
417 | else | 357 | else |