ARM: OMAP3: PM: correct enable/disable of daisy io chain
Currently the enabling and disabling of IO Daisy chain is not according to the TRM. The below steps are followed to enable/ disable the IO chain, based loosely on the "Sec 3.5.7.2.2 I/O Wake-Up Mechanism" section in OMAP3630 Public TRM[1]. Steps to enable IO chain: [a] Set PM_WKEN_WKUP.EN_IO bit [b] Set the PM_WKEN_WKUP.EN_IO_CHAIN bit [c] Poll for PM_WKST_WKUP.ST_IO_CHAIN. [d] When ST_IO_CHAIN bit set to 1, clear PM_WKEN_WKUP.EN_IO_CHAIN [e] Clear ST_IO_CHAIN bit. Steps to disable IO chain: [a] Clear PM_WKEN_WKUP.EN_IO_CHAIN bit [b] Clear PM_WKEN_WKUP.EN_IO bit [c] Clear PM_WKST_WKUP.ST_IO bit by writing 1 to it. Step [e] & [c] in each case can be skipped, as these are handled by the PRCM interrupt handler later. [1] http://focus.ti.com/pdfs/wtbu/OMAP36xx_ES1.x_PUBLIC_TRM_vV.zip Signed-off-by: Mohan V <mohanv@ti.com> Signed-off-by: Vishwanath BS <vishwanath.bs@ti.com> [paul@pwsan.com: modified commit message to clarify that these steps are based loosely on the TRM section, rather than documented exactly] Reviewed-by: Rajendra Nayak <rnayak@ti.com> [paul@pwsan.com: resolved new warnings from checkpatch] Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
75a4433e40
commit
fe7ea0062f
1 changed files with 4 additions and 3 deletions
|
@ -81,16 +81,17 @@ static void omap3_enable_io_chain(void)
|
||||||
/* Do a readback to assure write has been done */
|
/* Do a readback to assure write has been done */
|
||||||
omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN);
|
omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN);
|
||||||
|
|
||||||
while (!(omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN) &
|
while (!(omap2_prm_read_mod_reg(WKUP_MOD, PM_WKST) &
|
||||||
OMAP3430_ST_IO_CHAIN_MASK)) {
|
OMAP3430_ST_IO_CHAIN_MASK)) {
|
||||||
timeout++;
|
timeout++;
|
||||||
if (timeout > 1000) {
|
if (timeout > 1000) {
|
||||||
pr_err("Wake up daisy chain activation failed.\n");
|
pr_err("Wake up daisy chain activation failed.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
omap2_prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN_MASK,
|
|
||||||
WKUP_MOD, PM_WKEN);
|
|
||||||
}
|
}
|
||||||
|
omap2_prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK, WKUP_MOD,
|
||||||
|
PM_WKEN);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void omap3_disable_io_chain(void)
|
static void omap3_disable_io_chain(void)
|
||||||
|
|
Loading…
Add table
Reference in a new issue