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.
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 /bugs.launchpad .net/bugs/ 1227491 pci/hda/ hda_generic. c | 2 +-
BugLink: https:/
Reported-by: Szymon Acedański <email address hidden>
Signed-off-by: David Henningsson <email address hidden>
---
sound/
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.
diff --git a/sound/ pci/hda/ hda_generic. c b/sound/ pci/hda/ hda_generic. c pci/hda/ hda_generic. c pci/hda/ hda_generic. c capture_ mixers( struct hda_codec *codec) single_ cap_vol_ ctl(codec, n, vol, sw, bind_cap_ vol_ctl( codec, n, vol, sw); multi_cap_ vol_ctl( codec);
index ac41e9c..26ad4f0 100644
--- a/sound/
+++ b/sound/
@@ -3531,7 +3531,7 @@ static int create_
if (!multi)
err = create_
inv_dmic);
- else if (!multi_cap_vol)
+ else if (!multi_cap_vol && !inv_dmic)
err = create_
else
err = create_
--
1.7.9.5