Hi,
Werner Almesberger wrote:
matt_hsu wrote:
Do you
regularly make it into pcf50633_irq or does it end before that ?
What do you mean? Do you mean how do I know the IRQ strom is from pcf50633?
I mean what things get executed during the IRQ storm. Does
pcf50633_irq get called ? Maybe even pcf50633_work ?
- Werner
I don't know if during resume the system reinit the irq system. But long
time ago I have
some trouble to clean up pending interrupt and I fix that with this patch
Regards
Michael
The S3C2410_SRCPND is not clear correctly until the S3C2410_SUBSRCPND
is cleared.
Signed-off-by: michael <[EMAIL PROTECTED]>
---
arch/arm/plat-s3c24xx/irq.c | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
index ae2c5d7..59db0f4 100644
--- a/arch/arm/plat-s3c24xx/irq.c
+++ b/arch/arm/plat-s3c24xx/irq.c
@@ -682,26 +682,26 @@ void __init s3c24xx_init_irq(void)
last = 0;
for (i = 0; i < 4; i++) {
- pend = __raw_readl(S3C2410_INTPND);
+ pend = __raw_readl(S3C2410_SUBSRCPND);
if (pend == 0 || pend == last)
break;
- __raw_writel(pend, S3C2410_SRCPND);
- __raw_writel(pend, S3C2410_INTPND);
- printk("irq: clearing pending status %08x\n", (int)pend);
+ printk("irq: clearing subpending status %08x\n", (int)pend);
+ __raw_writel(pend, S3C2410_SUBSRCPND);
last = pend;
}
last = 0;
for (i = 0; i < 4; i++) {
- pend = __raw_readl(S3C2410_SUBSRCPND);
+ pend = __raw_readl(S3C2410_INTPND);
if (pend == 0 || pend == last)
break;
- printk("irq: clearing subpending status %08x\n", (int)pend);
- __raw_writel(pend, S3C2410_SUBSRCPND);
+ __raw_writel(pend, S3C2410_SRCPND);
+ __raw_writel(pend, S3C2410_INTPND);
+ printk("irq: clearing pending status %08x\n", (int)pend);
last = pend;
}
--
1.5.2.1.174.gcd03-dirty