summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-07-31 10:40:05 +0200
committerTakashi Iwai <tiwai@suse.de>2012-07-31 10:50:20 +0200
commit1f43f6c1bc8d740e75b4177eb29110858bb5fea2 (patch)
tree6923fdb09817ef494a3142994df19f141b1d634f
parentc9dbc4802b413e2d0b08fc483cbf5db7f8e2f360 (diff)
downloadop-kernel-dev-1f43f6c1bc8d740e75b4177eb29110858bb5fea2.zip
op-kernel-dev-1f43f6c1bc8d740e75b4177eb29110858bb5fea2.tar.gz
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>
-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 a760c30..94040cc 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)
OpenPOWER on IntegriCloud