aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/sgi-ip32
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2009-03-30 08:49:44 -0400
committerRalf Baechle <ralf@linux-mips.org>2009-03-30 08:49:44 -0400
commitc87e09096dcd1ea3da8dfe434ee694fac51031c8 (patch)
treed988b5b545173c79ac013977720d62c7d26ec337 /arch/mips/sgi-ip32
parent3e168ae286f5203d4b4aae0ae15c0d6282bcdd21 (diff)
MIPS: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all platforms
__do_IRQ() is deprecated and will go away. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/sgi-ip32')
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c63
1 files changed, 45 insertions, 18 deletions
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index 0d6b6663d5f6..0aefc5319a03 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -325,16 +325,11 @@ static void mask_and_ack_maceisa_irq(unsigned int irq)
325{ 325{
326 unsigned long mace_int; 326 unsigned long mace_int;
327 327
328 switch (irq) { 328 /* edge triggered */
329 case MACEISA_PARALLEL_IRQ: 329 mace_int = mace->perif.ctrl.istat;
330 case MACEISA_SERIAL1_TDMAPR_IRQ: 330 mace_int &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ));
331 case MACEISA_SERIAL2_TDMAPR_IRQ: 331 mace->perif.ctrl.istat = mace_int;
332 /* edge triggered */ 332
333 mace_int = mace->perif.ctrl.istat;
334 mace_int &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ));
335 mace->perif.ctrl.istat = mace_int;
336 break;
337 }
338 disable_maceisa_irq(irq); 333 disable_maceisa_irq(irq);
339} 334}
340 335
@@ -344,7 +339,16 @@ static void end_maceisa_irq(unsigned irq)
344 enable_maceisa_irq(irq); 339 enable_maceisa_irq(irq);
345} 340}
346 341
347static struct irq_chip ip32_maceisa_interrupt = { 342static struct irq_chip ip32_maceisa_level_interrupt = {
343 .name = "IP32 MACE ISA",
344 .ack = disable_maceisa_irq,
345 .mask = disable_maceisa_irq,
346 .mask_ack = disable_maceisa_irq,
347 .unmask = enable_maceisa_irq,
348 .end = end_maceisa_irq,
349};
350
351static struct irq_chip ip32_maceisa_edge_interrupt = {
348 .name = "IP32 MACE ISA", 352 .name = "IP32 MACE ISA",
349 .ack = mask_and_ack_maceisa_irq, 353 .ack = mask_and_ack_maceisa_irq,
350 .mask = disable_maceisa_irq, 354 .mask = disable_maceisa_irq,
@@ -500,27 +504,50 @@ void __init arch_init_irq(void)
500 for (irq = CRIME_IRQ_BASE; irq <= IP32_IRQ_MAX; irq++) { 504 for (irq = CRIME_IRQ_BASE; irq <= IP32_IRQ_MAX; irq++) {
501 switch (irq) { 505 switch (irq) {
502 case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ: 506 case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ:
503 set_irq_chip(irq, &ip32_mace_interrupt); 507 set_irq_chip_and_handler_name(irq,&ip32_mace_interrupt,
508 handle_level_irq, "level");
504 break; 509 break;
510
505 case MACEPCI_SCSI0_IRQ ... MACEPCI_SHARED2_IRQ: 511 case MACEPCI_SCSI0_IRQ ... MACEPCI_SHARED2_IRQ:
506 set_irq_chip(irq, &ip32_macepci_interrupt); 512 set_irq_chip_and_handler_name(irq,
513 &ip32_macepci_interrupt, handle_level_irq,
514 "level");
507 break; 515 break;
516
508 case CRIME_GBE0_IRQ ... CRIME_GBE3_IRQ: 517 case CRIME_GBE0_IRQ ... CRIME_GBE3_IRQ:
509 set_irq_chip(irq, &crime_edge_interrupt); 518 set_irq_chip_and_handler_name(irq,
519 &crime_edge_interrupt, handle_edge_irq, "edge");
510 break; 520 break;
511 case CRIME_CPUERR_IRQ: 521 case CRIME_CPUERR_IRQ:
512 case CRIME_MEMERR_IRQ: 522 case CRIME_MEMERR_IRQ:
513 set_irq_chip(irq, &crime_level_interrupt); 523 set_irq_chip_and_handler_name(irq,
524 &crime_level_interrupt, handle_level_irq,
525 "level");
514 break; 526 break;
527
515 case CRIME_RE_EMPTY_E_IRQ ... CRIME_RE_IDLE_E_IRQ: 528 case CRIME_RE_EMPTY_E_IRQ ... CRIME_RE_IDLE_E_IRQ:
516 case CRIME_SOFT0_IRQ ... CRIME_SOFT2_IRQ: 529 case CRIME_SOFT0_IRQ ... CRIME_SOFT2_IRQ:
517 set_irq_chip(irq, &crime_edge_interrupt); 530 set_irq_chip_and_handler_name(irq,
531 &crime_edge_interrupt, handle_edge_irq, "edge");
518 break; 532 break;
533
519 case CRIME_VICE_IRQ: 534 case CRIME_VICE_IRQ:
520 set_irq_chip(irq, &crime_edge_interrupt); 535 set_irq_chip_and_handler_name(irq,
536 &crime_edge_interrupt, handle_edge_irq, "edge");
537 break;
538
539 case MACEISA_PARALLEL_IRQ:
540 case MACEISA_SERIAL1_TDMAPR_IRQ:
541 case MACEISA_SERIAL2_TDMAPR_IRQ:
542 set_irq_chip_and_handler_name(irq,
543 &ip32_maceisa_edge_interrupt, handle_edge_irq,
544 "edge");
521 break; 545 break;
546
522 default: 547 default:
523 set_irq_chip(irq, &ip32_maceisa_interrupt); 548 set_irq_chip_and_handler_name(irq,
549 &ip32_maceisa_level_interrupt, handle_level_irq,
550 "level");
524 break; 551 break;
525 } 552 }
526 } 553 }