[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: Paul Mackerras <paulus@samba.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
parent
ac5d1a7d25
commit
80b8d5d6bc
1 changed files with 9 additions and 4 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue