summary refs log tree commit diff
path: root/sound
diff options
context:
space:
mode:
authorPhilby John <pjohn@mvista.com>2010-03-26 21:37:51 +0530
committerTakashi Iwai <tiwai@suse.de>2010-04-13 09:46:55 +0200
commitb68b58fd6a341c2115ff5fb466fe9fc0b581980e (patch)
treeeaeaa1a7babed5ee4df999d99468eff79e68f2d1 /sound
parent29aac005ff4dc8a5f50b80f4e5c4f59b21c0fb50 (diff)
downloadlinux-b68b58fd6a341c2115ff5fb466fe9fc0b581980e.tar.gz
ALSA: aaci - Fix alignment faults on ARM Cortex introduced by commit 29a4f2d3
The commit 29a4f2d3 used writel() at offset 0x26 which is
half-word aligned causing unaligned exceptions on a
Cortex-A8. The original patch solved the "aaci-pl041 fpga:04:
ac97 read back fail" issue on a soft reset. Reading from any
arbitrary aaci register seems to solve this issue.

Signed-off-by: Philby John <pjohn@mvista.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/arm/aaci.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c
index 656e474dca47..91acc9a243ec 100644
--- a/sound/arm/aaci.c
+++ b/sound/arm/aaci.c
@@ -863,7 +863,6 @@ static int __devinit aaci_probe_ac97(struct aaci *aaci)
 	struct snd_ac97 *ac97;
 	int ret;
 
-	writel(0, aaci->base + AC97_POWERDOWN);
 	/*
 	 * Assert AACIRESET for 2us
 	 */
@@ -1047,7 +1046,11 @@ static int __devinit aaci_probe(struct amba_device *dev, struct amba_id *id)
 
 	writel(0x1fff, aaci->base + AACI_INTCLR);
 	writel(aaci->maincr, aaci->base + AACI_MAINCR);
-
+	/*
+	 * Fix: ac97 read back fail errors by reading
+	 * from any arbitrary aaci register.
+	 */
+	readl(aaci->base + AACI_CSCH1);
 	ret = aaci_probe_ac97(aaci);
 	if (ret)
 		goto out;