summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-07-31 10:40:05 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-08-09 08:23:15 -0700
commit0186cfbb3c0036f896df6b72fd195997d6c865d8 (patch)
treef164fe253925c5229bc23cdcf475386d5bd7d5c3
parent96eea0fe908f3bdc58a08f70b274e72c88f2b834 (diff)
downloadlwn-0186cfbb3c0036f896df6b72fd195997d6c865d8.tar.gz
lwn-0186cfbb3c0036f896df6b72fd195997d6c865d8.zip
ALSA: hda - Fix mute-LED GPIO initialization for IDT codecs
commit 1f43f6c1bc8d740e75b4177eb29110858bb5fea2 upstream. 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. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-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 558a441c6fe8..d2f2264fa64d 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)
snd_hda_jack_report_sync(codec);
/* sync mute LED */
- snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
+ if (spec->gpio_led) {
+ if (spec->vmaster_mute.hook)
+ snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
+ else /* the very first init call doesn't have vmaster yet */
+ stac92xx_update_led_status(codec, false);
+ }
/* sync the power-map */
if (spec->num_pwrs)