diff options
author | Manuel Lauss <mano@roarinelk.homelinux.net> | 2008-12-21 03:26:17 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2009-01-11 04:57:26 -0500 |
commit | 785e3268e2951d4c0c21417c8e5d8004b2ab2480 (patch) | |
tree | 3e7e98dbaf2592f22f65090325a823d36caa13f7 /arch/mips/include | |
parent | 7179380ee9bdeb5fa2ff07581f512fe0f5382e5b (diff) |
MIPS: Alchemy: update core interrupt code.
This patch attempts to modernize core Alchemy interrupt handling code.
- add irq_chips for irq controllers instead of irq type,
- add a set_type() hook to change irq trigger type during runtime,
- add a set_wake() hook to control GPIO0..7 based wakeup,
- use linux' IRQF_TRIGGER_ constants instead of homebrew ones,
- enable GENERIC_HARDIRQS_NO__DO_IRQ.
- simplify plat_irq_dispatch
- merge au1xxx_irqmap into irq.c file, the only place where its
contents are referenced.
- board_init_irq() is now mandatory for every board; use it to register
the remaining (gpio-based) interrupt sources; update all boards
accordingly.
Run-tested on Db1200 and other Au1200 based platforms.
Signed-off-by: Manuel Lauss <mano@roarinelk.homelinux.net>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
delete mode 100644 arch/mips/alchemy/common/au1xxx_irqmap.c
Diffstat (limited to 'arch/mips/include')
-rw-r--r-- | arch/mips/include/asm/mach-au1x00/au1000.h | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/mips/include/asm/mach-au1x00/au1000.h b/arch/mips/include/asm/mach-au1x00/au1000.h index 0d302bad4492..a7ba35247c8a 100644 --- a/arch/mips/include/asm/mach-au1x00/au1000.h +++ b/arch/mips/include/asm/mach-au1x00/au1000.h | |||
@@ -109,10 +109,11 @@ struct au1xxx_irqmap { | |||
109 | int im_request; | 109 | int im_request; |
110 | }; | 110 | }; |
111 | 111 | ||
112 | /* | 112 | /* core calls this function to let boards initialize other IRQ sources */ |
113 | * init_IRQ looks for a table with this name. | 113 | void board_init_irq(void); |
114 | */ | 114 | |
115 | extern struct au1xxx_irqmap au1xxx_irq_map[]; | 115 | /* boards call this to register additional (GPIO) interrupts */ |
116 | void au1xxx_setup_irqmap(struct au1xxx_irqmap *map, int count); | ||
116 | 117 | ||
117 | #endif /* !defined (_LANGUAGE_ASSEMBLY) */ | 118 | #endif /* !defined (_LANGUAGE_ASSEMBLY) */ |
118 | 119 | ||
@@ -505,15 +506,6 @@ extern struct au1xxx_irqmap au1xxx_irq_map[]; | |||
505 | 506 | ||
506 | #define IC1_TESTBIT 0xB1800080 | 507 | #define IC1_TESTBIT 0xB1800080 |
507 | 508 | ||
508 | /* Interrupt Configuration Modes */ | ||
509 | #define INTC_INT_DISABLED 0x0 | ||
510 | #define INTC_INT_RISE_EDGE 0x1 | ||
511 | #define INTC_INT_FALL_EDGE 0x2 | ||
512 | #define INTC_INT_RISE_AND_FALL_EDGE 0x3 | ||
513 | #define INTC_INT_HIGH_LEVEL 0x5 | ||
514 | #define INTC_INT_LOW_LEVEL 0x6 | ||
515 | #define INTC_INT_HIGH_AND_LOW_LEVEL 0x7 | ||
516 | |||
517 | /* Interrupt Numbers */ | 509 | /* Interrupt Numbers */ |
518 | /* Au1000 */ | 510 | /* Au1000 */ |
519 | #ifdef CONFIG_SOC_AU1000 | 511 | #ifdef CONFIG_SOC_AU1000 |