Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6cc0e3b authored by Bastiaan Jacques's avatar Bastiaan Jacques Committed by Jaroslav Kysela
Browse files

[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: default avatarBastiaan Jacques <b.jacques@planet.nl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 1a183131
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -863,17 +863,15 @@ 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;
	}
	}
	if (count & 0xffffff) {
		idx = count >> 24;
		if (idx >= viadev->tbl_entries) {