From: Bastiaan Jacques Date: Thu, 20 Apr 2006 10:27:09 +0000 (+0200) Subject: [ALSA] via82xx: tweak VT8251 workaround X-Git-Tag: v2.6.17-rc4~104^2~11 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6cc0e3b0c087d350bdc5912ecdfb17e796ae266;p=linux-2.6 [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 Signed-off-by: Takashi Iwai --- diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 1b740dd482..f7a22aa65a 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;