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 | } |
