From 6a4032de91af0a2ce941da539e41b861359ee02d Mon Sep 17 00:00:00 2001 From: Petukhov Nikolay Date: Fri, 20 Jan 2006 10:41:18 -0800 Subject: [PATCH] [PATCH] ARM: OMAP: omap1510 MPU interrupt BUG __raw_readl return 32bit, but MPU have 16 bit registers example: MPU isr=0x0001, but __raw_readl() return isr=0x00010001 -> virtual interrupt 16 desc_handle_irq(0, d, regs) - handled ok desc_handle_irq(16, d, regs) - interrupt handler = NULL --- arch/arm/plat-omap/gpio.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index cf5ad2965c2..cb740c32ad3 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -764,6 +764,10 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc, u32 isr_saved, level_mask = 0; isr_saved = isr = __raw_readl(isr_reg); + + if (cpu_is_omap15xx() && (bank->method == METHOD_MPUIO)) + isr &= 0x0000ffff; + if (cpu_is_omap24xx()) level_mask = __raw_readl(bank->base + -- 2.41.1