Comment 10 for bug 1239392

Revision history for this message
Takashi Iwai (tiwai) wrote : Re: [PATCH] ALSA: hda - Fix inverted internal mic not indicated on some machines

At Mon, 14 Oct 2013 10:16:22 +0200,
David Henningsson wrote:
>
> The create_bind_cap_vol_ctl does not create any control indicating
> that an inverted dmic is present. Therefore, create multiple
> capture volumes in this scenario, so we always have some indication
> that the internal mic is inverted.
>
> This happens on the Lenovo Ideapad U310 as well as the Lenovo Yoga 13
> (both are based on the CX20590 codec), but the fix is generic and
> could be needed for other codecs/machines too.
>
> Thanks to Szymon Acedański for the pointer and a draft patch.
>
> BugLink: https://bugs.launchpad.net/bugs/1239392
> BugLink: https://bugs.launchpad.net/bugs/1227491
> Reported-by: Szymon Acedański <email address hidden>
> Signed-off-by: David Henningsson <email address hidden>
> ---
> sound/pci/hda/hda_generic.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> I think this fix is safe enough to send to Linus and stable, but will leave the
> final judgement to Takashi.

Yes, this looks good as a stable material, as far as I've tested,
too. Applied it now. Thanks!

Takashi

>
> diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
> index ac41e9c..26ad4f0 100644
> --- a/sound/pci/hda/hda_generic.c
> +++ b/sound/pci/hda/hda_generic.c
> @@ -3531,7 +3531,7 @@ static int create_capture_mixers(struct hda_codec *codec)
> if (!multi)
> err = create_single_cap_vol_ctl(codec, n, vol, sw,
> inv_dmic);
> - else if (!multi_cap_vol)
> + else if (!multi_cap_vol && !inv_dmic)
> err = create_bind_cap_vol_ctl(codec, n, vol, sw);
> else
> err = create_multi_cap_vol_ctl(codec);
> --
> 1.7.9.5
>