Commit ff173d45 authored by Rajendra Nayak's avatar Rajendra Nayak Committed by Paul Walmsley

OMAP4: PM: Declare idle modules as functional too

The omap4_cm_wait_module_ready function would only check for
the modules to be completely functional before declaring them
ready to be accessed.
There might also be instances where in the module is actually
in idle (under h/w control) but should still be declared
accessible, as the h/w control would make it functional when
needed.

Hence make omap4_cm_wait_module_ready return true in case
the module is fully functional *or* in idle state.
Fail only if the module is fully disabled or stuck intransition.

The explaination from the TRM for the idlest bits on OMAP4 is as
below for quick reference

Module idle state:
0x0 func:     Module is fully functional, including OCP
0x1 trans:    Module is performing transition: wakeup, or sleep, or sleep
              abortion
0x2 idle:     Module is in Idle mode (only OCP part). It is functional if
              using separate functional clock
0x3 disabled: Module is disabled and cannot be accessed
Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
Signed-off-by: default avatarPartha Basak <p-basak2@ti.com>
Signed-off-by: default avatarBenoit Cousson <b-cousson@ti.com>
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent f39f4898
...@@ -43,7 +43,6 @@ ...@@ -43,7 +43,6 @@
* using separate functional clock * using separate functional clock
* 0x3 disabled: Module is disabled and cannot be accessed * 0x3 disabled: Module is disabled and cannot be accessed
* *
* TODO: Need to handle module accessible in idle state
*/ */
int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg) int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg)
{ {
...@@ -52,9 +51,11 @@ int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg) ...@@ -52,9 +51,11 @@ int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg)
if (!clkctrl_reg) if (!clkctrl_reg)
return 0; return 0;
omap_test_timeout(((__raw_readl(clkctrl_reg) & omap_test_timeout((
OMAP4430_IDLEST_MASK) == 0), ((__raw_readl(clkctrl_reg) & OMAP4430_IDLEST_MASK) == 0) ||
MAX_MODULE_READY_TIME, i); (((__raw_readl(clkctrl_reg) & OMAP4430_IDLEST_MASK) >>
OMAP4430_IDLEST_SHIFT) == 0x2)),
MAX_MODULE_READY_TIME, i);
return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY; return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment