diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-29 16:33:32 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-29 16:33:32 -0700 |
commit | 3ae627b5a6c8f6bf992eee6a3399a1854641a476 (patch) | |
tree | 9babf0fb90fdc1369b72aa381495826bf4e80494 /arch/arm/mach-exynos4/irq-eint.c | |
parent | d4d7b2a11c423a8d4088bb0090e4c8d626d043bc (diff) | |
parent | 039920ccdde7b678adcc554cbb39f185080ce2e5 (diff) |
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc:
ARM: mach-footbridge: add missing header file <video/vga.h>
ARM: mach-orion5x: add missing header file <linux/vga.h>
arm: fix compile failure in orion5x/dns323-setup.c
at91: at91sam9261.c: fix typo in t2_clk alias for atmel_tcb.0
ARM: S5P: fix bug in spdif_clk_get_rate
ARM: EXYNOS4: Add restart hook for proper reboot
ARM: EXYNOS4: Increase reset delay for USB HOST PHY
ARM: S5P: add required chained_irq_enter/exit to gpio-int code
ARM: EXYNOS4: add required chained_irq_enter/exit to eint code
ARM: SAMSUNG: Add chained enrty/exit call to timer interrupt handler
ARM: S3C64XX: Fix build break in PM debug
ARM: S5PV210: Fix build warning
ARM: EXYNOS4: Fix the IRQ definitions for MIPI CSIS device
ARM: EXYNOS4: remove duplicated inclusion
ARM: EXYNOS4: Fix wrong devname to support clkdev
ARM: EXYNOS4: Use the correct regulator names on universal_c210
ARM: SAMSUNG: Fix Section mismatch in samsung_bl_set()
ARM: S5P64X0: Replace irq_gc_ack() with irq_gc_ack_set_bit()
Diffstat (limited to 'arch/arm/mach-exynos4/irq-eint.c')
-rw-r--r-- | arch/arm/mach-exynos4/irq-eint.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos4/irq-eint.c b/arch/arm/mach-exynos4/irq-eint.c index 9d87d2ac7f68..badb8c66fc9b 100644 --- a/arch/arm/mach-exynos4/irq-eint.c +++ b/arch/arm/mach-exynos4/irq-eint.c @@ -23,6 +23,8 @@ #include <mach/regs-gpio.h> +#include <asm/mach/irq.h> + static DEFINE_SPINLOCK(eint_lock); static unsigned int eint0_15_data[16]; @@ -184,8 +186,11 @@ static inline void exynos4_irq_demux_eint(unsigned int start) static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc) { + struct irq_chip *chip = irq_get_chip(irq); + chained_irq_enter(chip, desc); exynos4_irq_demux_eint(IRQ_EINT(16)); exynos4_irq_demux_eint(IRQ_EINT(24)); + chained_irq_exit(chip, desc); } static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) @@ -193,6 +198,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) u32 *irq_data = irq_get_handler_data(irq); struct irq_chip *chip = irq_get_chip(irq); + chained_irq_enter(chip, desc); chip->irq_mask(&desc->irq_data); if (chip->irq_ack) @@ -201,6 +207,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) generic_handle_irq(*irq_data); chip->irq_unmask(&desc->irq_data); + chained_irq_exit(chip, desc); } int __init exynos4_init_irq_eint(void) |