diff options
author | Andy Green <andy@openmoko.com> | 2008-12-04 20:47:54 +0000 |
---|---|---|
committer | Andy Green <agreen@pads.home.warmcat.com> | 2008-12-04 20:47:54 +0000 |
commit | 5430bdb92ec379dd0cd4d52d80180efc0b79e92b (patch) | |
tree | 2340c2900a9ac10c3d4a3eaa8d5b1b82d3336e1e | |
parent | 2acbf1a22e63eb8ed8e2fe214a1ee868a8e7323c (diff) |
fix-s3c-eint-offset-calc-error.patch
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>
-rw-r--r-- | arch/arm/mach-s3c2410/include/mach/irqs.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-s3c24xx/irq-pm.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/arch/arm/mach-s3c2410/include/mach/irqs.h b/arch/arm/mach-s3c2410/include/mach/irqs.h index 4a82338c287..1d0629d9570 100644 --- a/arch/arm/mach-s3c2410/include/mach/irqs.h +++ b/arch/arm/mach-s3c2410/include/mach/irqs.h @@ -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) diff --git a/arch/arm/plat-s3c24xx/irq-pm.c b/arch/arm/plat-s3c24xx/irq-pm.c index b7acf1a8ecd..87bda522c1a 100644 --- a/arch/arm/plat-s3c24xx/irq-pm.c +++ b/arch/arm/plat-s3c24xx/irq-pm.c @@ -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; |