aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brunner <mibru@gmx.de>2007-12-04 15:39:20 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-12-08 09:36:06 -0500
commit03d14a5536cf5611d27a106137a814c8f1135ddd (patch)
treea36b18415d40b45db39c350fd99726df2203db70
parenta0113a99cc3cd1a63153d11b7fcf9c1a2000df57 (diff)
[ARM] 4690/1: PXA: fix CKEN corruption in PXA27x AC97 cold reset code
Fix CKEN register corruption in the PXA27x cold reset code located in sound/arm/pxa27x-ac97.c. The problem has been introduced with a pxa_set_cken() function change in linux 2.6.23. This patch is based on patch 4527/1 that fixes the same problem in the ASoC PXA-AC97 driver. Additionally a definition for the CKEN index value is added and applied to both PXA AC97 drivers. Signed-off-by: Michael Brunner <mibru@gmx.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--include/asm-arm/arch-pxa/pxa-regs.h1
-rw-r--r--sound/arm/pxa2xx-ac97.c4
-rw-r--r--sound/soc/pxa/pxa2xx-ac97.c4
3 files changed, 5 insertions, 4 deletions
diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h
index 6b33df6f1995..1bd398da07da 100644
--- a/include/asm-arm/arch-pxa/pxa-regs.h
+++ b/include/asm-arm/arch-pxa/pxa-regs.h
@@ -1784,6 +1784,7 @@
1784#define CCCR_M_MASK 0x0060 /* Memory Frequency to Run Mode Frequency Multiplier */ 1784#define CCCR_M_MASK 0x0060 /* Memory Frequency to Run Mode Frequency Multiplier */
1785#define CCCR_L_MASK 0x001f /* Crystal Frequency to Memory Frequency Multiplier */ 1785#define CCCR_L_MASK 0x001f /* Crystal Frequency to Memory Frequency Multiplier */
1786 1786
1787#define CKEN_AC97CONF (31) /* AC97 Controller Configuration */
1787#define CKEN_CAMERA (24) /* Camera Interface Clock Enable */ 1788#define CKEN_CAMERA (24) /* Camera Interface Clock Enable */
1788#define CKEN_SSP1 (23) /* SSP1 Unit Clock Enable */ 1789#define CKEN_SSP1 (23) /* SSP1 Unit Clock Enable */
1789#define CKEN_MEMC (22) /* Memory Controller Clock Enable */ 1790#define CKEN_MEMC (22) /* Memory Controller Clock Enable */
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c
index 7bc2767e1584..55c6c822bec1 100644
--- a/sound/arm/pxa2xx-ac97.c
+++ b/sound/arm/pxa2xx-ac97.c
@@ -113,9 +113,9 @@ static void pxa2xx_ac97_reset(struct snd_ac97 *ac97)
113 gsr_bits = 0; 113 gsr_bits = 0;
114#ifdef CONFIG_PXA27x 114#ifdef CONFIG_PXA27x
115 /* PXA27x Developers Manual section 13.5.2.2.1 */ 115 /* PXA27x Developers Manual section 13.5.2.2.1 */
116 pxa_set_cken(1 << 31, 1); 116 pxa_set_cken(CKEN_AC97CONF, 1);
117 udelay(5); 117 udelay(5);
118 pxa_set_cken(1 << 31, 0); 118 pxa_set_cken(CKEN_AC97CONF, 0);
119 GCR = GCR_COLD_RST; 119 GCR = GCR_COLD_RST;
120 udelay(50); 120 udelay(50);
121#else 121#else
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index dd14abcdf1bd..60e6f4677f93 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -160,9 +160,9 @@ static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
160 gsr_bits = 0; 160 gsr_bits = 0;
161#ifdef CONFIG_PXA27x 161#ifdef CONFIG_PXA27x
162 /* PXA27x Developers Manual section 13.5.2.2.1 */ 162 /* PXA27x Developers Manual section 13.5.2.2.1 */
163 pxa_set_cken(31, 1); 163 pxa_set_cken(CKEN_AC97CONF, 1);
164 udelay(5); 164 udelay(5);
165 pxa_set_cken(31, 0); 165 pxa_set_cken(CKEN_AC97CONF, 0);
166 GCR = GCR_COLD_RST; 166 GCR = GCR_COLD_RST;
167 udelay(50); 167 udelay(50);
168#else 168#else