OMAP3: AM3505/3517 do not have IO wakeup capability
v4 cover OMAP3: AM3505/3517 do not have IO wakeup capability
Changes from V3:
1, Tested on AM3517EVM and OMAP3530EVM.
Stanley.
PATCH v4 1/1 OMAP3: AM3505/3517 do not have IO wakeup capability
AM3505/3517 doesn't have IO wakeup capability, so we do not need to set the bit OMAP3430_EN_IO and the bit OMAP3430_EN_IO_CHAIN in the register PM_WKEN_WKUP when the system enters suspend state.
Tested on AM3517EVM and OMAP3530EVM.
--- arch/arm/mach-omap2/id.c | 2 ++ arch/arm/mach-omap2/pm34xx.c | 7 ++++--- arch/arm/plat-omap/include/plat/cpu.h | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-)
arch/arm/mach-omap2/id.c +2 -0
@@ -179,6 +179,8 @@ void __init omap3_check_features(void)OMAP3_CHECK_FEATURE (status,ISP );if (cpu_is_omap3630 ()) omap3_features |=OMAP3_HAS_192MHZ_CLK ; +if (!cpu_is_omap3505 () && !cpu_is_omap3517 ()) + omap3_features |=OMAP3_HAS_IO_WAKEUP ;/* * TODO: Get additional info (where applicable)
arch/arm/mach-omap2/pm34xx.c +4 -3
@@ -385,8 +385,9 @@ void omap_sram_idle(void)/* Enable IO-PAD and IO-CHAIN wakeups */ per_next_state =pwrdm_read_next_pwrst (per_pwrdm); core_next_state =pwrdm_read_next_pwrst (core_pwrdm); -if (per_next_state <PWRDM_POWER_ON || - core_next_state <PWRDM_POWER_ON ) { +if (omap3_has_io_wakeup () && \ + (per_next_state <PWRDM_POWER_ON || + core_next_state <PWRDM_POWER_ON )) {prm_set_mod_reg_bits (OMAP3430_EN_IO_MASK ,WKUP_MOD ,PM_WKEN );omap3_enable_io_chain (); }
@@ -479,7 +480,7 @@ void omap_sram_idle(void) }/* Disable IO-PAD and IO-CHAIN wakeup */ -if (core_next_state <PWRDM_POWER_ON ) { +if (omap3_has_io_wakeup () && core_next_state <PWRDM_POWER_ON ) {prm_clear_mod_reg_bits (OMAP3430_EN_IO_MASK ,WKUP_MOD ,PM_WKEN );omap3_disable_io_chain (); }
arch/arm/plat-omap/include/plat/cpu.h +2 -0
@@ -444,6 +444,7 @@ extern u32 omap3_features;#define OMAP3_HAS_NEON BIT(3)#define OMAP3_HAS_ISP BIT(4)#define OMAP3_HAS_192MHZ_CLK BIT(5) +#define OMAP3_HAS_IO_WAKEUP BIT(6)#define OMAP3_HAS_FEATURE (feat,flag) \ static inline unsigned int omap3_has_ ##feat(void) \
@@ -457,5 +458,6 @@ OMAP3_HAS_FEATURE(iva, IVA) OMAP3_HAS_FEATURE(neon, NEON) OMAP3_HAS_FEATURE(isp, ISP) OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK) +OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP)#endif
Signature · 1 line
1.5.4.3
Quoted 7 lines · Stanley.Miao
AM3505/3517 doesn't have IO wakeup capability, so we do not need to set the bit
OMAP3430_EN_IOand the bitOMAP3430_EN_IO_CHAINin the registerPM_WKEN_WKUPwhen the system enters suspend state.Tested on AM3517EVM and OMAP3530EVM.
Signed-off-by Stanley.Miao <[email protected]>
Quoted 63 lines
--- arch/arm/mach-omap2/id.c | 2 ++ arch/arm/mach-omap2/pm34xx.c | 7 ++++--- arch/arm/plat-omap/include/plat/cpu.h | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-)arch/arm/mach-omap2/id.c +2
-0@@ -179,6 +179,8 @@ void __init omap3_check_features(void)OMAP3_CHECK_FEATURE (status,ISP );if (cpu_is_omap3630 ()) omap3_features |=OMAP3_HAS_192MHZ_CLK ; +if (!cpu_is_omap3505 () && !cpu_is_omap3517 ()) + omap3_features |=OMAP3_HAS_IO_WAKEUP ;/* * TODO: Get additional info (where applicable) arch/arm/mach-omap2/pm34xx.c +4
-3@@ -385,8 +385,9 @@ void omap_sram_idle(void)/* Enable IO-PAD and IO-CHAIN wakeups */ per_next_state =pwrdm_read_next_pwrst (per_pwrdm); core_next_state =pwrdm_read_next_pwrst (core_pwrdm); -if (per_next_state <PWRDM_POWER_ON || - core_next_state <PWRDM_POWER_ON ) { +if (omap3_has_io_wakeup () && \ + (per_next_state <PWRDM_POWER_ON || + core_next_state <PWRDM_POWER_ON )) {prm_set_mod_reg_bits (OMAP3430_EN_IO_MASK ,WKUP_MOD ,PM_WKEN );omap3_enable_io_chain (); }@@ -479,7 +480,7 @@ void omap_sram_idle(void) }/* Disable IO-PAD and IO-CHAIN wakeup */ -if (core_next_state <PWRDM_POWER_ON ) { +if (omap3_has_io_wakeup () && core_next_state <PWRDM_POWER_ON ) {prm_clear_mod_reg_bits (OMAP3430_EN_IO_MASK ,WKUP_MOD ,PM_WKEN );omap3_disable_io_chain (); }arch/arm/plat-omap/include/plat/cpu.h +2
-0@@ -444,6 +444,7 @@ extern u32 omap3_features;#define OMAP3_HAS_NEON BIT(3)#define OMAP3_HAS_ISP BIT(4)#define OMAP3_HAS_192MHZ_CLK BIT(5) +#define OMAP3_HAS_IO_WAKEUP BIT(6)#define OMAP3_HAS_FEATURE (feat,flag) \ static inline unsigned int omap3_has_ ##feat(void) \@@ -457,5 +458,6 @@ OMAP3_HAS_FEATURE(iva, IVA) OMAP3_HAS_FEATURE(neon, NEON) OMAP3_HAS_FEATURE(isp, ISP) OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK) +OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP)#endif
Tony Lindgren
maintainerPATCH v4 1/1 OMAP3: AM3505/3517 do not have IO wakeup capability
In reply to Stanley.MiaoThis patch has been applied to the linux-omap
by youw fwiendly patch wobot.
Branch in linux-omap: for-next
Initial commit ID (Likely to change): b6c6aa94d0dd3dd05f42412fc39628520f72f63e
PatchWorks
http://patchwork.kernel.org/patch/108524/
Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=b6c6aa94d0dd3dd05f42412fc39628520f72f63e