From d7927e19167680053f282fb4007e81c244ebf465 Mon Sep 17 00:00:00 2001 From: Paulius Zaleckas Date: Fri, 14 Nov 2008 11:01:39 +0100 Subject: patch-mxc-fiq Drivers which are going to use it will have to select it and use mxc_set_irq_fiq() to set FIQ mode for this interrupt. Signed-off-by: Paulius Zaleckas Signed-off-by: Sascha Hauer --- arch/arm/plat-mxc/irq.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'arch/arm/plat-mxc/irq.c') diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c index d862c9e5f8d..dd7021b1983 100644 --- a/arch/arm/plat-mxc/irq.c +++ b/arch/arm/plat-mxc/irq.c @@ -17,9 +17,11 @@ * MA 02110-1301, USA. */ +#include #include #include #include +#include #define AVIC_BASE IO_ADDRESS(AVIC_BASE_ADDR) #define AVIC_INTCNTL (AVIC_BASE + 0x00) /* int control reg */ @@ -65,6 +67,28 @@ void imx_irq_set_priority(unsigned char irq, unsigned char prio) EXPORT_SYMBOL(imx_irq_set_priority); #endif +#ifdef CONFIG_FIQ +int mxc_set_irq_fiq(unsigned int irq, unsigned int type) +{ + unsigned int irqt; + + if (irq >= MXC_MAX_INT_LINES) + return -EINVAL; + + if (irq < MXC_MAX_INT_LINES / 2) { + irqt = __raw_readl(AVIC_INTTYPEL) & ~(1 << irq); + __raw_writel(irqt | (!!type << irq), AVIC_INTTYPEL); + } else { + irq -= MXC_MAX_INT_LINES / 2; + irqt = __raw_readl(AVIC_INTTYPEH) & ~(1 << irq); + __raw_writel(irqt | (!!type << irq), AVIC_INTTYPEH); + } + + return 0; +} +EXPORT_SYMBOL(mxc_set_irq_fiq); +#endif /* CONFIG_FIQ */ + /* Disable interrupt number "irq" in the AVIC */ static void mxc_mask_irq(unsigned int irq) { @@ -119,5 +143,10 @@ void __init mxc_init_irq(void) /* init architectures chained interrupt handler */ mxc_register_gpios(); +#ifdef CONFIG_FIQ + /* Initialize FIQ */ + init_FIQ(); +#endif + printk(KERN_INFO "MXC IRQ initialized\n"); } -- cgit v1.2.3 From 47fee6fedd3ea08e9b0f1172bc74e59ee7a6b3d9 Mon Sep 17 00:00:00 2001 From: Claudio Scordino Date: Tue, 11 Nov 2008 10:56:36 +0100 Subject: Unused variable 'reg' removed. Signed-off-by: Claudio Scordino Signed-off-by: Sascha Hauer --- arch/arm/plat-mxc/irq.c | 1 - 1 file changed, 1 deletion(-) (limited to 'arch/arm/plat-mxc/irq.c') diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c index dd7021b1983..e937c8759a9 100644 --- a/arch/arm/plat-mxc/irq.c +++ b/arch/arm/plat-mxc/irq.c @@ -115,7 +115,6 @@ static struct irq_chip mxc_avic_chip = { void __init mxc_init_irq(void) { int i; - u32 reg; /* put the AVIC into the reset value with * all interrupts disabled -- cgit v1.2.3 From 9d631b835f518848b7f3ce803bfd00dc1bb8a5b1 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 18 Dec 2008 11:08:55 +0100 Subject: [ARM] MXC: remove dependency to other include files from irqs.h This patch removes the inclusion of mach/hardware.h from mach/irqs.h and switches to more meaningful names for the irq related macros. Signed-off-by: Sascha Hauer --- arch/arm/plat-mxc/irq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'arch/arm/plat-mxc/irq.c') diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c index e937c8759a9..06862654a89 100644 --- a/arch/arm/plat-mxc/irq.c +++ b/arch/arm/plat-mxc/irq.c @@ -72,14 +72,14 @@ int mxc_set_irq_fiq(unsigned int irq, unsigned int type) { unsigned int irqt; - if (irq >= MXC_MAX_INT_LINES) + if (irq >= MXC_INTERNAL_IRQS) return -EINVAL; - if (irq < MXC_MAX_INT_LINES / 2) { + if (irq < MXC_INTERNAL_IRQS / 2) { irqt = __raw_readl(AVIC_INTTYPEL) & ~(1 << irq); __raw_writel(irqt | (!!type << irq), AVIC_INTTYPEL); } else { - irq -= MXC_MAX_INT_LINES / 2; + irq -= MXC_INTERNAL_IRQS / 2; irqt = __raw_readl(AVIC_INTTYPEH) & ~(1 << irq); __raw_writel(irqt | (!!type << irq), AVIC_INTTYPEH); } @@ -129,7 +129,7 @@ void __init mxc_init_irq(void) /* all IRQ no FIQ */ __raw_writel(0, AVIC_INTTYPEH); __raw_writel(0, AVIC_INTTYPEL); - for (i = 0; i < MXC_MAX_INT_LINES; i++) { + for (i = 0; i < MXC_INTERNAL_IRQS; i++) { set_irq_chip(i, &mxc_avic_chip); set_irq_handler(i, handle_level_irq); set_irq_flags(i, IRQF_VALID); -- cgit v1.2.3 From a2449091522990e9746a3f1420b9041d9669590c Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 18 Dec 2008 11:51:57 +0100 Subject: [ARM] MXC: do not include mach/hardware.h from mach/memory.h Instead of including other header files, define PHYS_OFFSET directly Signed-off-by: Sascha Hauer --- arch/arm/plat-mxc/irq.c | 1 + 1 file changed, 1 insertion(+) (limited to 'arch/arm/plat-mxc/irq.c') diff --git a/arch/arm/plat-mxc/irq.c b/arch/arm/plat-mxc/irq.c index 06862654a89..6e7578a3514 100644 --- a/arch/arm/plat-mxc/irq.c +++ b/arch/arm/plat-mxc/irq.c @@ -22,6 +22,7 @@ #include #include #include +#include #define AVIC_BASE IO_ADDRESS(AVIC_BASE_ADDR) #define AVIC_INTCNTL (AVIC_BASE + 0x00) /* int control reg */ -- cgit v1.2.3