[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>
This commit is contained in:
Родитель
1a183131fe
Коммит
c6cc0e3b0c
|
@ -863,17 +863,15 @@ static snd_pcm_uframes_t snd_via8233_pcm_pointer(struct snd_pcm_substream *subst
|
||||||
if (!status)
|
if (!status)
|
||||||
status = inb(VIADEV_REG(viadev, OFFSET_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)) {
|
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;
|
res = 0;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (count & 0xffffff) {
|
if (count & 0xffffff) {
|
||||||
idx = count >> 24;
|
idx = count >> 24;
|
||||||
if (idx >= viadev->tbl_entries) {
|
if (idx >= viadev->tbl_entries) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче