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

Commit 80b8d5d6 authored by Paul Mackerras's avatar Paul Mackerras Committed by Jaroslav Kysela
Browse files

[ALSA] Enable stereo line input for TAS codec



Despite what the data sheet says in one place, to get stereo input
from input A (line in), we have to clear the 'input B monaural' bit in
the ACR.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent ac5d1a7d
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -514,9 +514,15 @@ static int tas_snd_capture_source_put(struct snd_kcontrol *kcontrol,
	mutex_lock(&tas->mtx);
	oldacr = tas->acr;

	tas->acr &= ~TAS_ACR_INPUT_B;
	/*
	 * Despite what the data sheet says in one place, the
	 * TAS_ACR_B_MONAUREAL bit forces mono output even when
	 * input A (line in) is selected.
	 */
	tas->acr &= ~(TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL);
	if (ucontrol->value.enumerated.item[0])
		tas->acr |= TAS_ACR_INPUT_B;
		tas->acr |= TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL |
		      TAS_ACR_B_MON_SEL_RIGHT;
	if (oldacr == tas->acr) {
		mutex_unlock(&tas->mtx);
		return 0;
@@ -686,8 +692,7 @@ static int tas_reset_init(struct tas *tas)
	if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp))
		goto outerr;

	tas->acr |= TAS_ACR_ANALOG_PDOWN | TAS_ACR_B_MONAUREAL |
		TAS_ACR_B_MON_SEL_RIGHT;
	tas->acr |= TAS_ACR_ANALOG_PDOWN;
	if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr))
		goto outerr;