fix-s3c-eint-offset-calc-error.patch
authorAndy Green <andy@openmoko.com>
Thu, 4 Dec 2008 20:47:54 +0000 (20:47 +0000)
committerAndy Green <agreen@pads.home.warmcat.com>
Thu, 4 Dec 2008 20:47:54 +0000 (20:47 +0000)
There's a bug in calculation of IRQ_EINT_BIT introduced on the test
branch for pm changes for s3c by Ben Dooks fixed in this patch.

There's also a bit of a mystery about how wake gets to wake EINT
set of interrupts, I added a couple of lines that make it work for
EINT4+ but not sure what's meant to be there for EINT0-3.

Still, this gets GTA02 resume working again.

cc: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Andy Green <andy@openmoko.com>

arch/arm/mach-s3c2410/include/mach/irqs.h
arch/arm/plat-s3c24xx/irq-pm.c

index 4a82338..1d0629d 100644 (file)
@@ -84,7 +84,7 @@
 #define IRQ_EINT22     S3C2410_IRQ(50)
 #define IRQ_EINT23     S3C2410_IRQ(51)
 
-#define IRQ_EINT_BIT(x)        ((x) - (IRQ_EINT4 + 4))
+#define IRQ_EINT_BIT(x)        ((x) - IRQ_EINT4 + 4)
 #define IRQ_EINT(x)    (((x) >= 4) ? (IRQ_EINT4 + (x) - 4) : (IRQ_EINT0 + (x)))
 
 #define IRQ_LCD_FIFO   S3C2410_IRQ(52)
index b7acf1a..87bda52 100644 (file)
@@ -34,6 +34,9 @@ int s3c_irq_wake(unsigned int irqno, unsigned int state)
 {
        unsigned long irqbit = 1 << (irqno - IRQ_EINT0);
 
+       if (irqno >= IRQ_EINT4)
+               return s3c_irqext_wake(irqno, state);
+
        if (!(s3c_irqwake_intallow & irqbit))
                return -ENOENT;