mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
ALSA: hda - Disable widget power-save for VIA codecs
The widget power-save that was enabled in 4.1 kernel seems resulting
in the silent output on VIA codecs by some reason. Some widgets get
wrong power states.
As a quick fix, turn this flag off while keeping power_down_unused
flag. This will bring back to the state of 4.0.x.
Fixes: 688b12cc3c
('ALSA: hda - Use the new power control for VIA codecs')
Reported-and-tested-by: Harald Dunkel <harri@afaics.de>
Cc: <stable@vger.kernel.org> # v4.1
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ec56af67a1
commit
735c75cf4d
@ -241,7 +241,9 @@ static int via_pin_power_ctl_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
|
||||
ucontrol->value.enumerated.item[0] = codec->power_save_node;
|
||||
struct via_spec *spec = codec->spec;
|
||||
|
||||
ucontrol->value.enumerated.item[0] = spec->gen.power_down_unused;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -252,9 +254,9 @@ static int via_pin_power_ctl_put(struct snd_kcontrol *kcontrol,
|
||||
struct via_spec *spec = codec->spec;
|
||||
bool val = !!ucontrol->value.enumerated.item[0];
|
||||
|
||||
if (val == codec->power_save_node)
|
||||
if (val == spec->gen.power_down_unused)
|
||||
return 0;
|
||||
codec->power_save_node = val;
|
||||
/* codec->power_save_node = val; */ /* widget PM seems yet broken */
|
||||
spec->gen.power_down_unused = val;
|
||||
analog_low_current_mode(codec);
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user