]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/plat-samsung/irq-uart.c
Merge branch 'at91/cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[karo-tx-linux.git] / arch / arm / plat-samsung / irq-uart.c
index 657405c481d04bed1dc310e245c182192b25e83d..3014c7226bd1af9a98e949f888993afe5a0ca16e 100644 (file)
@@ -19,6 +19,8 @@
 #include <linux/irq.h>
 #include <linux/io.h>
 
+#include <asm/mach/irq.h>
+
 #include <mach/map.h>
 #include <plat/irq-uart.h>
 #include <plat/regs-serial.h>
 static void s3c_irq_demux_uart(unsigned int irq, struct irq_desc *desc)
 {
        struct s3c_uart_irq *uirq = desc->irq_data.handler_data;
+       struct irq_chip *chip = irq_get_chip(irq);
        u32 pend = __raw_readl(uirq->regs + S3C64XX_UINTP);
        int base = uirq->base_irq;
 
+       chained_irq_enter(chip, desc);
+
        if (pend & (1 << 0))
                generic_handle_irq(base);
        if (pend & (1 << 1))
@@ -41,6 +46,8 @@ static void s3c_irq_demux_uart(unsigned int irq, struct irq_desc *desc)
                generic_handle_irq(base + 2);
        if (pend & (1 << 3))
                generic_handle_irq(base + 3);
+
+       chained_irq_exit(chip, desc);
 }
 
 static void __init s3c_init_uart_irq(struct s3c_uart_irq *uirq)