mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 13:43:55 +08:00
ALSA: hda - Preserve input pin-ctl bits in HP-automute for VIA codec
For smart51 pins, we need to preserve the input pin-control bits at auto-mute controls instead of overwriting zero or pin-out-only. Otherwise the VREF won't be set properly when smart51 is disabled again. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
6e969d9155
commit
9499473463
@ -1509,10 +1509,18 @@ static void toggle_output_mutes(struct hda_codec *codec, int num_pins,
|
|||||||
hda_nid_t *pins, bool mute)
|
hda_nid_t *pins, bool mute)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < num_pins; i++)
|
for (i = 0; i < num_pins; i++) {
|
||||||
|
unsigned int parm = snd_hda_codec_read(codec, pins[i], 0,
|
||||||
|
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
|
||||||
|
if (parm & AC_PINCTL_IN_EN)
|
||||||
|
continue;
|
||||||
|
if (mute)
|
||||||
|
parm &= ~AC_PINCTL_OUT_EN;
|
||||||
|
else
|
||||||
|
parm |= AC_PINCTL_OUT_EN;
|
||||||
snd_hda_codec_write(codec, pins[i], 0,
|
snd_hda_codec_write(codec, pins[i], 0,
|
||||||
AC_VERB_SET_PIN_WIDGET_CONTROL,
|
AC_VERB_SET_PIN_WIDGET_CONTROL, parm);
|
||||||
mute ? 0 : PIN_OUT);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* mute internal speaker if line-out is plugged */
|
/* mute internal speaker if line-out is plugged */
|
||||||
|
Loading…
Reference in New Issue
Block a user