diff options
| author | Michael Brunner <mibru@gmx.de> | 2007-12-04 15:39:20 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-12-08 09:36:06 -0500 |
| commit | 03d14a5536cf5611d27a106137a814c8f1135ddd (patch) | |
| tree | a36b18415d40b45db39c350fd99726df2203db70 | |
| parent | a0113a99cc3cd1a63153d11b7fcf9c1a2000df57 (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.h | 1 | ||||
| -rw-r--r-- | sound/arm/pxa2xx-ac97.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/pxa2xx-ac97.c | 4 |
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 |
