diff options
author | Kim Phillips <kim.phillips@freescale.com> | 2006-08-25 11:59:07 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-08-30 10:34:33 +1000 |
commit | b9f0f1bb2bcaae96dd3267f6bd3ad1ca44a1f5ad (patch) | |
tree | 3b9f29de777df859406ee649cc5a29b703c026ae /arch/powerpc/sysdev/ipic.h | |
parent | bf4152dd7ccb6c060d786200a893dfe30193a07f (diff) | |
download | kernel-common-b9f0f1bb2bcaae96dd3267f6bd3ad1ca44a1f5ad.tar.gz kernel-common-b9f0f1bb2bcaae96dd3267f6bd3ad1ca44a1f5ad.tar.bz2 kernel-common-b9f0f1bb2bcaae96dd3267f6bd3ad1ca44a1f5ad.zip |
[POWERPC] Adapt ipic driver to new host_ops interface, add set_irq_type to set IRQ sense
This converts ipic code to Benh's IRQ mods. For the IPIC, IRQ sense values in the device tree equal those in include/linux/irq.h; that's 8 for low assertion (most internal IRQs on mpc83xx), and 2 for high-to-low change.
spinlocks added to [un]mask, ack operations; default handler and type now set in host_map; and redundant condition check eliminated.
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/sysdev/ipic.h')
-rw-r--r-- | arch/powerpc/sysdev/ipic.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/ipic.h b/arch/powerpc/sysdev/ipic.h index a60c9d18bb7f..c28e589877eb 100644 --- a/arch/powerpc/sysdev/ipic.h +++ b/arch/powerpc/sysdev/ipic.h @@ -15,7 +15,18 @@ #include <asm/ipic.h> -#define MPC83xx_IPIC_SIZE (0x00100) +#define NR_IPIC_INTS 128 + +/* External IRQS */ +#define IPIC_IRQ_EXT0 48 +#define IPIC_IRQ_EXT1 17 +#define IPIC_IRQ_EXT7 23 + +/* Default Priority Registers */ +#define IPIC_SIPRR_A_DEFAULT 0x05309770 +#define IPIC_SIPRR_D_DEFAULT 0x05309770 +#define IPIC_SMPRR_A_DEFAULT 0x05309770 +#define IPIC_SMPRR_B_DEFAULT 0x05309770 /* System Global Interrupt Configuration Register */ #define SICFR_IPSA 0x00010000 @@ -31,7 +42,15 @@ struct ipic { volatile u32 __iomem *regs; - unsigned int irq_offset; + + /* The remapper for this IPIC */ + struct irq_host *irqhost; + + /* The "linux" controller struct */ + struct irq_chip hc_irq; + + /* The device node of the interrupt controller */ + struct device_node *of_node; }; struct ipic_info { |