diff options
author | Jon Hunter <jon-hunter@ti.com> | 2012-10-08 18:24:15 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-10-09 00:39:07 -0400 |
commit | cf956d9f0734b4888655d6b7420e4dac9dba22d0 (patch) | |
tree | 87ee6bc34ee267a6f246616c322b3560eea71df5 /arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |
parent | 695f0117e7d80709c7aec54d5fffb8051c97cf23 (diff) |
ARM: OMAP3: fix workaround for EMU clockdomain
Commit b71c721 (ARM: OMAP2+: clockdomain/hwmod: add workaround for EMU
clockdomain idle problems) added a workaround for the EMU clock domain on
OMAP3/4 devices to prevent the clock domain for transitioning while it is
in use.
In the proposed patch [1] code was added to the omap3xxx_clkdm_clk_enable()
and omap3xxx_clkdm_clk_disable() functions to check for the flag
CLKDM_MISSING_IDLE_REPORTING and perform the appropriate action. However, in the
merged patch it appears that this code was added to the omap2_clkdm_clk_enable()
and omap2_clkdm_clk_disable() functions by mistake.
[1] http://marc.info/?l=linux-arm-kernel&m=134383567112518&w=2
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/clockdomain2xxx_3xxx.c')
-rw-r--r-- | arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c index 9a7792aec673..70294f54e35a 100644 --- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |||
@@ -183,17 +183,6 @@ static int omap2_clkdm_clk_enable(struct clockdomain *clkdm) | |||
183 | if (!clkdm->clktrctrl_mask) | 183 | if (!clkdm->clktrctrl_mask) |
184 | return 0; | 184 | return 0; |
185 | 185 | ||
186 | /* | ||
187 | * The CLKDM_MISSING_IDLE_REPORTING flag documentation has | ||
188 | * more details on the unpleasant problem this is working | ||
189 | * around | ||
190 | */ | ||
191 | if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING && | ||
192 | !(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) { | ||
193 | _enable_hwsup(clkdm); | ||
194 | return 0; | ||
195 | } | ||
196 | |||
197 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 186 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
198 | clkdm->clktrctrl_mask); | 187 | clkdm->clktrctrl_mask); |
199 | 188 | ||
@@ -217,17 +206,6 @@ static int omap2_clkdm_clk_disable(struct clockdomain *clkdm) | |||
217 | if (!clkdm->clktrctrl_mask) | 206 | if (!clkdm->clktrctrl_mask) |
218 | return 0; | 207 | return 0; |
219 | 208 | ||
220 | /* | ||
221 | * The CLKDM_MISSING_IDLE_REPORTING flag documentation has | ||
222 | * more details on the unpleasant problem this is working | ||
223 | * around | ||
224 | */ | ||
225 | if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) && | ||
226 | (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) { | ||
227 | omap3_clkdm_wakeup(clkdm); | ||
228 | return 0; | ||
229 | } | ||
230 | |||
231 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 209 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
232 | clkdm->clktrctrl_mask); | 210 | clkdm->clktrctrl_mask); |
233 | 211 | ||
@@ -269,6 +247,17 @@ static int omap3xxx_clkdm_clk_enable(struct clockdomain *clkdm) | |||
269 | if (!clkdm->clktrctrl_mask) | 247 | if (!clkdm->clktrctrl_mask) |
270 | return 0; | 248 | return 0; |
271 | 249 | ||
250 | /* | ||
251 | * The CLKDM_MISSING_IDLE_REPORTING flag documentation has | ||
252 | * more details on the unpleasant problem this is working | ||
253 | * around | ||
254 | */ | ||
255 | if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) && | ||
256 | (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) { | ||
257 | omap3_clkdm_wakeup(clkdm); | ||
258 | return 0; | ||
259 | } | ||
260 | |||
272 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 261 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
273 | clkdm->clktrctrl_mask); | 262 | clkdm->clktrctrl_mask); |
274 | 263 | ||
@@ -292,6 +281,17 @@ static int omap3xxx_clkdm_clk_disable(struct clockdomain *clkdm) | |||
292 | if (!clkdm->clktrctrl_mask) | 281 | if (!clkdm->clktrctrl_mask) |
293 | return 0; | 282 | return 0; |
294 | 283 | ||
284 | /* | ||
285 | * The CLKDM_MISSING_IDLE_REPORTING flag documentation has | ||
286 | * more details on the unpleasant problem this is working | ||
287 | * around | ||
288 | */ | ||
289 | if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING && | ||
290 | !(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) { | ||
291 | _enable_hwsup(clkdm); | ||
292 | return 0; | ||
293 | } | ||
294 | |||
295 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 295 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
296 | clkdm->clktrctrl_mask); | 296 | clkdm->clktrctrl_mask); |
297 | 297 | ||