| From b63eae0a6c84839275a4638a7baa391be965cd0e Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Fri, 25 Oct 2013 23:43:10 +0200 |
| Subject: ALSA: hda - Add missing initial vmaster hook at build_controls callback |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit b63eae0a6c84839275a4638a7baa391be965cd0e upstream. |
| |
| The generic parser has a support of vmaster hook, but this is |
| initialized only in the init callback with the check of the presence |
| of the corresponding kctl. However, since kctl is NULL at the very |
| first init callback that is called before build_controls callback, the |
| vmaster hook sync is skipped there. Eventually this leads to the |
| uninitialized state depending on the hook implementation. |
| |
| This patch adds a simple workaround, just calling the sync function |
| explicitly at build_controls callback. |
| |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/pci/hda/hda_generic.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/sound/pci/hda/hda_generic.c |
| +++ b/sound/pci/hda/hda_generic.c |
| @@ -4428,9 +4428,11 @@ int snd_hda_gen_build_controls(struct hd |
| true, &spec->vmaster_mute.sw_kctl); |
| if (err < 0) |
| return err; |
| - if (spec->vmaster_mute.hook) |
| + if (spec->vmaster_mute.hook) { |
| snd_hda_add_vmaster_hook(codec, &spec->vmaster_mute, |
| spec->vmaster_mute_enum); |
| + snd_hda_sync_vmaster_hook(&spec->vmaster_mute); |
| + } |
| } |
| |
| free_kctls(spec); /* no longer needed */ |