[ARM] 4690/1: PXA: fix CKEN corruption in PXA27x AC97 cold reset code
authorMichael Brunner <mibru@gmx.de>
Tue, 4 Dec 2007 20:39:20 +0000 (21:39 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 8 Dec 2007 14:36:06 +0000 (14:36 +0000)
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>
include/asm-arm/arch-pxa/pxa-regs.h
sound/arm/pxa2xx-ac97.c
sound/soc/pxa/pxa2xx-ac97.c

index 6b33df6..1bd398d 100644 (file)
 #define CCCR_M_MASK    0x0060          /* Memory Frequency to Run Mode Frequency Multiplier */
 #define CCCR_L_MASK    0x001f          /* Crystal Frequency to Memory Frequency Multiplier */
 
+#define CKEN_AC97CONF   (31)    /* AC97 Controller Configuration */
 #define CKEN_CAMERA    (24)    /* Camera Interface Clock Enable */
 #define CKEN_SSP1      (23)    /* SSP1 Unit Clock Enable */
 #define CKEN_MEMC      (22)    /* Memory Controller Clock Enable */
index 7bc2767..55c6c82 100644 (file)
@@ -113,9 +113,9 @@ static void pxa2xx_ac97_reset(struct snd_ac97 *ac97)
        gsr_bits = 0;
 #ifdef CONFIG_PXA27x
        /* PXA27x Developers Manual section 13.5.2.2.1 */
-       pxa_set_cken(1 << 31, 1);
+       pxa_set_cken(CKEN_AC97CONF, 1);
        udelay(5);
-       pxa_set_cken(1 << 31, 0);
+       pxa_set_cken(CKEN_AC97CONF, 0);
        GCR = GCR_COLD_RST;
        udelay(50);
 #else
index dd14abc..60e6f46 100644 (file)
@@ -160,9 +160,9 @@ static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
        gsr_bits = 0;
 #ifdef CONFIG_PXA27x
        /* PXA27x Developers Manual section 13.5.2.2.1 */
-       pxa_set_cken(31, 1);
+       pxa_set_cken(CKEN_AC97CONF, 1);
        udelay(5);
-       pxa_set_cken(31, 0);
+       pxa_set_cken(CKEN_AC97CONF, 0);
        GCR = GCR_COLD_RST;
        udelay(50);
 #else