diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index b5531dd3ae9c..3a04c73ac03c 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -1002,8 +1002,10 @@ static int _enable_clocks(struct omap_hwmod *oh) | |||
1002 | clk_enable(oh->_clk); | 1002 | clk_enable(oh->_clk); |
1003 | 1003 | ||
1004 | list_for_each_entry(os, &oh->slave_ports, node) { | 1004 | list_for_each_entry(os, &oh->slave_ports, node) { |
1005 | if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) | 1005 | if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) { |
1006 | omap2_clk_deny_idle(os->_clk); | ||
1006 | clk_enable(os->_clk); | 1007 | clk_enable(os->_clk); |
1008 | } | ||
1007 | } | 1009 | } |
1008 | 1010 | ||
1009 | /* The opt clocks are controlled by the device driver. */ | 1011 | /* The opt clocks are controlled by the device driver. */ |
@@ -1055,8 +1057,10 @@ static int _disable_clocks(struct omap_hwmod *oh) | |||
1055 | clk_disable(oh->_clk); | 1057 | clk_disable(oh->_clk); |
1056 | 1058 | ||
1057 | list_for_each_entry(os, &oh->slave_ports, node) { | 1059 | list_for_each_entry(os, &oh->slave_ports, node) { |
1058 | if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) | 1060 | if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) { |
1059 | clk_disable(os->_clk); | 1061 | clk_disable(os->_clk); |
1062 | omap2_clk_allow_idle(os->_clk); | ||
1063 | } | ||
1060 | } | 1064 | } |
1061 | 1065 | ||
1062 | if (oh->flags & HWMOD_OPT_CLKS_NEEDED) | 1066 | if (oh->flags & HWMOD_OPT_CLKS_NEEDED) |
@@ -2436,9 +2440,13 @@ static void _setup_iclk_autoidle(struct omap_hwmod *oh) | |||
2436 | continue; | 2440 | continue; |
2437 | 2441 | ||
2438 | if (os->flags & OCPIF_SWSUP_IDLE) { | 2442 | if (os->flags & OCPIF_SWSUP_IDLE) { |
2439 | /* XXX omap_iclk_deny_idle(c); */ | 2443 | /* |
2444 | * we might have multiple users of one iclk with | ||
2445 | * different requirements, disable autoidle when | ||
2446 | * the module is enabled, e.g. dss iclk | ||
2447 | */ | ||
2440 | } else { | 2448 | } else { |
2441 | /* XXX omap_iclk_allow_idle(c); */ | 2449 | /* we are enabling autoidle afterwards anyways */ |
2442 | clk_enable(os->_clk); | 2450 | clk_enable(os->_clk); |
2443 | } | 2451 | } |
2444 | } | 2452 | } |