Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 172758
b: refs/heads/master
c: 3a7ec26
h: refs/heads/master
v: v3
  • Loading branch information
Kalle Jokiniemi authored and Kevin Hilman committed Nov 11, 2009
1 parent acd3b26 commit 081527c
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 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: c16c3f672defb7aca1276065375fe1ee5ca003dc
refs/heads/master: 3a7ec26bb44988051d97479f6dfcfd4942a99049
38 changes: 35 additions & 3 deletions trunk/arch/arm/mach-omap2/pm34xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,35 @@ static inline void omap3_per_restore_context(void)
omap_gpio_restore_context();
}

static void omap3_enable_io_chain(void)
{
int timeout = 0;

if (omap_rev() >= OMAP3430_REV_ES3_1) {
prm_set_mod_reg_bits(OMAP3430_EN_IO_CHAIN, WKUP_MOD, PM_WKEN);
/* Do a readback to assure write has been done */
prm_read_mod_reg(WKUP_MOD, PM_WKEN);

while (!(prm_read_mod_reg(WKUP_MOD, PM_WKST) &
OMAP3430_ST_IO_CHAIN)) {
timeout++;
if (timeout > 1000) {
printk(KERN_ERR "Wake up daisy chain "
"activation failed.\n");
return;
}
prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN,
WKUP_MOD, PM_WKST);
}
}
}

static void omap3_disable_io_chain(void)
{
if (omap_rev() >= OMAP3430_REV_ES3_1)
prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN, WKUP_MOD, PM_WKEN);
}

static void omap3_core_save_context(void)
{
u32 control_padconf_off;
Expand Down Expand Up @@ -367,8 +396,9 @@ static void omap_sram_idle(void)
omap3_core_save_context();
omap3_prcm_save_context();
}
/* Enable IO-PAD wakeup */
/* Enable IO-PAD and IO-CHAIN wakeups */
prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
omap3_enable_io_chain();
}

/*
Expand Down Expand Up @@ -432,9 +462,11 @@ static void omap_sram_idle(void)
pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
}

/* Disable IO-PAD wakeup */
if (core_next_state < PWRDM_POWER_ON)
/* Disable IO-PAD and IO-CHAIN wakeup */
if (core_next_state < PWRDM_POWER_ON) {
prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
omap3_disable_io_chain();
}

pwrdm_post_transition();

Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/mach-omap2/prm-regbits-34xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@
/* PM_PREPWSTST_GFX specific bits */

/* PM_WKEN_WKUP specific bits */
#define OMAP3430_EN_IO_CHAIN (1 << 16)
#define OMAP3430_EN_IO (1 << 8)
#define OMAP3430_EN_GPIO1 (1 << 3)

Expand All @@ -373,6 +374,7 @@
/* PM_IVA2GRPSEL_WKUP specific bits */

/* PM_WKST_WKUP specific bits */
#define OMAP3430_ST_IO_CHAIN (1 << 16)
#define OMAP3430_ST_IO (1 << 8)

/* PRM_CLKSEL */
Expand Down

0 comments on commit 081527c

Please sign in to comment.