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

Reply via email to