diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-12-12 01:24:12 +0100 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2009-03-08 13:35:36 +0100 |
commit | 56b34426888d35b3b6367c216bbfb17b82b4f0ac (patch) | |
tree | 435ec8f8856f222a95dd7c83ace6c01806ba8e5b /arch/arm/plat-s3c/pm.c | |
parent | [ARM] S3C24XX: Remove changelog from arch/arm/plat-s3c24xx/irq.c (diff) | |
download | linux-56b34426888d35b3b6367c216bbfb17b82b4f0ac.tar.xz linux-56b34426888d35b3b6367c216bbfb17b82b4f0ac.zip |
[ARM] S3C: Make IRQ_EINT sleep control common
Move the IRQ_EINT sleep control to be available to all
s3c impelmentations. Since s3c_irqext_wake is not large,
place it in arch/arm/plat-s3c/pm.c as adding it to a new
file would be a waste of compile time.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/plat-s3c/pm.c')
-rw-r--r-- | arch/arm/plat-s3c/pm.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c/pm.c b/arch/arm/plat-s3c/pm.c index fea58bea973d..7c736deff8ae 100644 --- a/arch/arm/plat-s3c/pm.c +++ b/arch/arm/plat-s3c/pm.c @@ -27,6 +27,7 @@ #include <mach/regs-gpio.h> #include <mach/regs-mem.h> #include <mach/regs-irq.h> +#include <asm/irq.h> #include <plat/pm.h> #include <plat/pm-core.h> @@ -100,6 +101,29 @@ static void s3c_pm_save_uart(void) { } static void s3c_pm_restore_uart(void) { } #endif +/* The IRQ ext-int code goes here, it is too small to currently bother + * with its own file. */ + +unsigned long s3c_irqwake_intmask = 0xffffffffL; +unsigned long s3c_irqwake_eintmask = 0xffffffffL; + +int s3c_irqext_wake(unsigned int irqno, unsigned int state) +{ + unsigned long bit = 1L << IRQ_EINT_BIT(irqno); + + if (!(s3c_irqwake_eintallow & bit)) + return -ENOENT; + + printk(KERN_INFO "wake %s for irq %d\n", + state ? "enabled" : "disabled", irqno); + + if (!state) + s3c_irqwake_eintmask |= bit; + else + s3c_irqwake_eintmask &= ~bit; + + return 0; +} /* helper functions to save and restore register state */ |