Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03d14a55 authored by Michael Brunner's avatar Michael Brunner Committed by Russell King
Browse files

[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: default avatarMichael Brunner <mibru@gmx.de>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent a0113a99
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1784,6 +1784,7 @@
#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 */
+2 −2
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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