===================================================================
@@ -654,12 +654,6 @@ static void _sysc_enable(struct omap_hwm
_set_master_standbymode(oh, idlemode, &v);
}
- if (sf & SYSC_HAS_AUTOIDLE) {
- idlemode = (oh->flags & HWMOD_NO_OCP_AUTOIDLE) ?
- 0 : 1;
- _set_module_autoidle(oh, idlemode, &v);
- }
-
/* XXX OCP ENAWAKEUP bit? */
/*
@@ -672,6 +666,19 @@ static void _sysc_enable(struct omap_hwm
_set_clockactivity(oh, oh->class->sysc->clockact, &v);
_write_sysconfig(v, oh);
+
+ /*
+ * Set the auto idle bit only after setting the smartidle bit
+ * as this is requirement for some modules like USBOTG
+ * setting this will not have any impact on the other modues.
+ */
+
+ if (sf & SYSC_HAS_AUTOIDLE) {
+ idlemode = (oh->flags & HWMOD_NO_OCP_AUTOIDLE) ?
+ 0 : 1;
+ _set_module_autoidle(oh, idlemode, &v);
+ }
+ _write_sysconfig(v, oh);
}
/**