From c6cc0e3b0c087d350bdc5912ecdfb17e796ae266 Mon Sep 17 00:00:00 2001
From: Bastiaan Jacques <b.jacques@planet.nl>
Date: Thu, 20 Apr 2006 12:27:09 +0200
Subject: [PATCH] [ALSA] via82xx: tweak VT8251 workaround

Move the workaround for the VT8251 up a bit, and check for STAT_EOL
rather than STAT_ACTIVE. This resolves issues some people were having
with certain ALSA clients (and allows the STAT_ACTIVE check to do what
it was intended to do).
This change was suggested by Andrew Daviel.

Signed-off-by: Bastiaan Jacques <b.jacques@planet.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/via82xx.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 1b740dd4825b5..f7a22aa65a5e7 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -863,16 +863,14 @@ static snd_pcm_uframes_t snd_via8233_pcm_pointer(struct snd_pcm_substream *subst
 	if (!status)
 		status = inb(VIADEV_REG(viadev, OFFSET_STATUS));
 
+	/* An apparent bug in the 8251 is worked around by sending a 
+	 * REG_CTRL_START. */
+	if (chip->revision == VIA_REV_8251 && (status & VIA_REG_STAT_EOL))
+		snd_via82xx_pcm_trigger(substream, SNDRV_PCM_TRIGGER_START);
+
 	if (!(status & VIA_REG_STAT_ACTIVE)) {
-		/* An apparent bug in the 8251 is worked around by sending
-		 * a REG_CTRL_START. */
-		if (chip->revision == VIA_REV_8251)
-			snd_via82xx_pcm_trigger(substream,
-						SNDRV_PCM_TRIGGER_START);
-		else {
-			res = 0;
-			goto unlock;
-		}
+		res = 0;
+		goto unlock;
 	}
 	if (count & 0xffffff) {
 		idx = count >> 24;
-- 
GitLab