* [PATCH] GPIO: OMAP: Fixed spurious IRQ issue for GPIO interrupts
@ 2009-04-03 7:58 Roger Quadros
2009-04-03 23:46 ` [APPLIED] " Tony Lindgren
0 siblings, 1 reply; 2+ messages in thread
From: Roger Quadros @ 2009-04-03 7:58 UTC (permalink / raw)
To: ext Tony Lindgren; +Cc: linux-omap
From: Roger Quadros <ext-roger.quadros@nokia.com>
Date: Fri, 3 Apr 2009 10:32:20 +0300
Subject: [PATCH] GPIO: OMAP: Fixed spurious IRQ issue for GPIO interrupts
Flush posted write to IRQSTATUS register in GPIO IRQ handler.
This eliminates the below error for all peripherals that use GPIO interrupts.
<4>Spurious irq 95: 0xffffffdf, please flush posted write for irq 31
Signed-off-by: Roger Quadros <ext-roger.quadros@nokia.com>
---
arch/arm/plat-omap/gpio.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 210a1c0..17d7afe 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -758,8 +758,12 @@ static void _clear_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
/* Workaround for clearing DSP GPIO interrupts to allow retention */
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
+ reg = bank->base + OMAP24XX_GPIO_IRQSTATUS2;
if (cpu_is_omap24xx() || cpu_is_omap34xx())
- __raw_writel(gpio_mask, bank->base + OMAP24XX_GPIO_IRQSTATUS2);
+ __raw_writel(gpio_mask, reg);
+
+ /* Flush posted write for the irq status to avoid spurious interrupts */
+ __raw_readl(reg);
#endif
}
--
1.5.6.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-04-03 23:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-03 7:58 [PATCH] GPIO: OMAP: Fixed spurious IRQ issue for GPIO interrupts Roger Quadros
2009-04-03 23:46 ` [APPLIED] " Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox