|
@@ -2200,6 +2200,11 @@ static int _enable(struct omap_hwmod *oh)
|
|
*/
|
|
*/
|
|
static int _idle(struct omap_hwmod *oh)
|
|
static int _idle(struct omap_hwmod *oh)
|
|
{
|
|
{
|
|
|
|
+ if (oh->flags & HWMOD_NO_IDLE) {
|
|
|
|
+ oh->_int_flags |= _HWMOD_SKIP_ENABLE;
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
pr_debug("omap_hwmod: %s: idling\n", oh->name);
|
|
pr_debug("omap_hwmod: %s: idling\n", oh->name);
|
|
|
|
|
|
if (oh->_state != _HWMOD_STATE_ENABLED) {
|
|
if (oh->_state != _HWMOD_STATE_ENABLED) {
|
|
@@ -2504,6 +2509,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
|
|
oh->flags |= HWMOD_INIT_NO_RESET;
|
|
oh->flags |= HWMOD_INIT_NO_RESET;
|
|
if (of_find_property(np, "ti,no-idle-on-init", NULL))
|
|
if (of_find_property(np, "ti,no-idle-on-init", NULL))
|
|
oh->flags |= HWMOD_INIT_NO_IDLE;
|
|
oh->flags |= HWMOD_INIT_NO_IDLE;
|
|
|
|
+ if (of_find_property(np, "ti,no-idle", NULL))
|
|
|
|
+ oh->flags |= HWMOD_NO_IDLE;
|
|
}
|
|
}
|
|
|
|
|
|
oh->_state = _HWMOD_STATE_INITIALIZED;
|
|
oh->_state = _HWMOD_STATE_INITIALIZED;
|
|
@@ -2630,7 +2637,7 @@ static void __init _setup_postsetup(struct omap_hwmod *oh)
|
|
* XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
|
|
* XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
|
|
* it should be set by the core code as a runtime flag during startup
|
|
* it should be set by the core code as a runtime flag during startup
|
|
*/
|
|
*/
|
|
- if ((oh->flags & HWMOD_INIT_NO_IDLE) &&
|
|
|
|
|
|
+ if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
|
|
(postsetup_state == _HWMOD_STATE_IDLE)) {
|
|
(postsetup_state == _HWMOD_STATE_IDLE)) {
|
|
oh->_int_flags |= _HWMOD_SKIP_ENABLE;
|
|
oh->_int_flags |= _HWMOD_SKIP_ENABLE;
|
|
postsetup_state = _HWMOD_STATE_ENABLED;
|
|
postsetup_state = _HWMOD_STATE_ENABLED;
|