Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 137512
b: refs/heads/master
c: 56b3442
h: refs/heads/master
v: v3
  • Loading branch information
Ben Dooks committed Mar 8, 2009
1 parent ba4a522 commit 0855678
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7299a40918e15d5f9b4bc7fcb02163c335d92e43
refs/heads/master: 56b34426888d35b3b6367c216bbfb17b82b4f0ac
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-s3c2410/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,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(x) (((x) >= 4) ? (IRQ_EINT4 + (x) - 4) : (IRQ_EINT0 + (x)))

#define IRQ_LCD_FIFO S3C2410_IRQ(52)
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/mach-s3c24a0/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@
#define IRQ_EINT17 S3C2410_IRQ(49)
#define IRQ_EINT18 S3C2410_IRQ(50)

#define IRQ_EINT_BIT(x) ((x) - IRQ_EINT00)

/* SUB IRQS */
#define IRQ_S3CUART_RX0 S3C2410_IRQ(51) /* 67 */
#define IRQ_S3CUART_TX0 S3C2410_IRQ(52)
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/plat-s3c/include/plat/pm.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,11 @@ extern void s3c_pm_do_restore(struct sleep_save *ptr, int count);
extern void s3c_pm_do_restore_core(struct sleep_save *ptr, int count);

#ifdef CONFIG_PM
extern int s3c_irqext_wake(unsigned int irqno, unsigned int state);
extern int s3c24xx_irq_suspend(struct sys_device *dev, pm_message_t state);
extern int s3c24xx_irq_resume(struct sys_device *dev);
#else
#define s3c_irqext_wake NULL
#define s3c24xx_irq_suspend NULL
#define s3c24xx_irq_resume NULL
#endif
Expand Down
24 changes: 24 additions & 0 deletions trunk/arch/arm/plat-s3c/pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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 */

Expand Down
2 changes: 0 additions & 2 deletions trunk/arch/arm/plat-s3c24xx/include/plat/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,7 @@ s3c_irqsub_ack(unsigned int irqno, unsigned int parentmask, unsigned int group)

#ifdef CONFIG_PM
extern int s3c_irq_wake(unsigned int irqno, unsigned int state);
extern int s3c_irqext_wake(unsigned int irqno, unsigned int state);
#else
#define s3c_irqext_wake NULL
#define s3c_irq_wake NULL
#endif

Expand Down
23 changes: 1 addition & 22 deletions trunk/arch/arm/plat-s3c24xx/irq-pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,9 @@
*/

unsigned long s3c_irqwake_intallow = 1L << (IRQ_RTC - IRQ_EINT0) | 0xfL;
unsigned long s3c_irqwake_intmask = 0xffffffffL;
unsigned long s3c_irqwake_eintallow = 0x0000fff0L;
unsigned long s3c_irqwake_eintmask = 0xffffffffL;

int
s3c_irq_wake(unsigned int irqno, unsigned int state)
int s3c_irq_wake(unsigned int irqno, unsigned int state)
{
unsigned long irqbit = 1 << (irqno - IRQ_EINT0);

Expand All @@ -51,24 +48,6 @@ s3c_irq_wake(unsigned int irqno, unsigned int state)
return 0;
}

int s3c_irqext_wake(unsigned int irqno, unsigned int state)
{
unsigned long bit = 1L << (irqno - EXTINT_OFF);

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;
}

static struct sleep_save irq_save[] = {
SAVE_ITEM(S3C2410_INTMSK),
SAVE_ITEM(S3C2410_INTSUBMSK),
Expand Down

0 comments on commit 0855678

Please sign in to comment.