aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEero Nurkkala <ext-eero.nurkkala@nokia.com>2009-08-20 16:18:17 +0300
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-08-20 20:10:27 +0100
commit2ba93f8fa77c0140de163e8a31bb9c09b5ded74c (patch)
tree08fa08e3161b87dff66e37241f52707f4ed493b9
parentd9a9b3f5f7d4736cfe6fae95b9d63b07faeb702e (diff)
downloadlinux-linaro-precise-2ba93f8fa77c0140de163e8a31bb9c09b5ded74c.tar.gz
OMAP: McBSP: Retain McBSP FCLK clockactivity
FCLK may get autogated so that it prevents the McBSP to work properly. It is the bit 9 that must be set for maintaining the McBSP FCLK. Signed-off-by: Eero Nurkkala <ext-eero.nurkkala@nokia.com> Signed-off-by: Eduardo Valentin <eduardo.valentin@nokia.com> Acked-by: Jarkko Nikula <jarkko.nikula@nokia.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--arch/arm/plat-omap/include/mach/mcbsp.h1
-rw-r--r--arch/arm/plat-omap/mcbsp.c6
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h b/arch/arm/plat-omap/include/mach/mcbsp.h
index fe10ae8b027..70e950e295e 100644
--- a/arch/arm/plat-omap/include/mach/mcbsp.h
+++ b/arch/arm/plat-omap/include/mach/mcbsp.h
@@ -254,6 +254,7 @@
#define RDISABLE 0x0001
/********************** McBSP SYSCONFIG bit definitions ********************/
+#define CLOCKACTIVITY(value) ((value)<<8)
#define SIDLEMODE(value) ((value)<<3)
#define ENAWAKEUP 0x0004
#define SOFTRST 0x0002
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 86bfad88abd..2c274e6f0de 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -316,8 +316,8 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp)
u16 syscon;
syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
- syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03));
- syscon |= (ENAWAKEUP | SIDLEMODE(0x02));
+ syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
+ syscon |= (ENAWAKEUP | SIDLEMODE(0x02) | CLOCKACTIVITY(0x02));
OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
OMAP_MCBSP_WRITE(mcbsp->io_base, WAKEUPEN, XRDYEN | RRDYEN);
@@ -333,7 +333,7 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp)
u16 syscon;
syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
- syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03));
+ syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
OMAP_MCBSP_WRITE(mcbsp->io_base, WAKEUPEN, 0);