aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-07-31 04:40:05 -0400
committerTakashi Iwai <tiwai@suse.de>2012-07-31 04:50:20 -0400
commit1f43f6c1bc8d740e75b4177eb29110858bb5fea2 (patch)
tree6923fdb09817ef494a3142994df19f141b1d634f /sound/pci/hda/patch_sigmatel.c
parentc9dbc4802b413e2d0b08fc483cbf5db7f8e2f360 (diff)
ALSA: hda - Fix mute-LED GPIO initialization for IDT codecs
The IDT codecs initializes the GPIO setup for mute LEDs via snd_hda_sync_vmaster_hook(). This works in most cases except for the very first call, which is called before PCM and control creations. Thus before Master switch is set manually via alsactl, the mute LED may show the wrong state, depending on the polarity. Now it's fixed by calling the LED-status update function manually when no vmaster is set yet. Cc: <stable@vger.kernel.org> [v3.4+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r--sound/pci/hda/patch_sigmatel.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index a760c30f1caa..94040ccf8e8f 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -4420,7 +4420,12 @@ static int stac92xx_init(struct hda_codec *codec)
4420 snd_hda_jack_report_sync(codec); 4420 snd_hda_jack_report_sync(codec);
4421 4421
4422 /* sync mute LED */ 4422 /* sync mute LED */
4423 snd_hda_sync_vmaster_hook(&spec->vmaster_mute); 4423 if (spec->gpio_led) {
4424 if (spec->vmaster_mute.hook)
4425 snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
4426 else /* the very first init call doesn't have vmaster yet */
4427 stac92xx_update_led_status(codec, false);
4428 }
4424 4429
4425 /* sync the power-map */ 4430 /* sync the power-map */
4426 if (spec->num_pwrs) 4431 if (spec->num_pwrs)