aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorEero Nurkkala <ext-eero.nurkkala@nokia.com>2009-08-20 09:18:20 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-08-20 15:10:28 -0400
commit72cc6d715d5b018e2cff4adb68966855850d4e77 (patch)
tree1de489136f247a7476dbec72759cb51311dafa86 /arch
parentfa3935ba34667ffd35fbb33958cd1d67035fdf82 (diff)
OMAP: McBSP: Let element DMA mode hit retention also
The device no longer hits retention if element DMA mode is taken for at least the duration of the serial console timeout. Force element DMA mode to shut down through smartidle. Signed-off-by: Eero Nurkkala <ext-eero.nurkkala@nokia.com> Acked-by: Eduardo Valentin <eduardo.valentin@nokia.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/plat-omap/mcbsp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 56a56887ded..b63a7209b41 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -343,6 +343,15 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp)
343 343
344 syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON); 344 syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
345 syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03)); 345 syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
346 /*
347 * HW bug workaround - If no_idle mode is taken, we need to
348 * go to smart_idle before going to always_idle, or the
349 * device will not hit retention anymore.
350 */
351 syscon |= SIDLEMODE(0x02);
352 OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
353
354 syscon &= ~(SIDLEMODE(0x03));
346 OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon); 355 OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
347 356
348 OMAP_MCBSP_WRITE(mcbsp->io_base, WAKEUPEN, 0); 357 OMAP_MCBSP_WRITE(mcbsp->io_base, WAKEUPEN, 0);