Re: [PATCH] ALSA: hda/conexant: Add pin config quirk for Lenovo IdeaPad Slim 5 16AKP10
Takashi Iwai <[email protected]> Tue, 16 Jun 2026 13:27:51 +0200
| Newsgroups | org.alsa-project.alsa-devel,org.kernel.vger.linux-sound |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 16 Jun 2026 01:33:53 +0200, Galen wrote: > > The Lenovo IdeaPad Slim 5 16AKP10 (PCI SSID 17aa:38b6) uses the > Conexant SN6140 codec. The internal microphone is on pin 0x1a but > the BIOS configures it with pin default 0x95a60120, which includes > a jack detection bit that causes the kernel to treat it as an > unplugged external mic rather than a fixed internal mic. > > Add a pin config quirk that overrides pin 0x1a to 0x95a60130, > setting the connectivity bits to indicate a fixed/always-connected > device. This allows the internal microphone to be correctly > identified and used. > > Signed-off-by: Galen Hassen <[email protected]> > --- > sound/hda/codecs/conexant.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/sound/hda/codecs/conexant.c b/sound/hda/codecs/conexant.c > index e3b6aaabe..40d4591f9 100644 > --- a/sound/hda/codecs/conexant.c > +++ b/sound/hda/codecs/conexant.c > @@ -291,6 +291,7 @@ enum { > CXT_FIXUP_HEADSET_MIC, > CXT_FIXUP_HP_MIC_NO_PRESENCE, > CXT_PINCFG_SWS_JS201D, > + CXT_PINCFG_LENOVO_IDEAPAD_SLIM5_16AKP10, > CXT_PINCFG_TOP_SPEAKER, > CXT_FIXUP_HP_A_U, > CXT_FIXUP_ACER_SWIFT_HP, > @@ -826,6 +827,12 @@ static const struct hda_pintbl cxt_pincfg_lemote[] = { > {} > }; > > +/* Lenovo IdeaPad Slim 5 16AKP10 with SN6140 */ > +static const struct hda_pintbl cxt_pincfg_lenovo_ideapad_slim5_16akp10[] = { > + { 0x1a, 0x95a60130 }, /* Internal mic, fixed/always-connected */ > + {} > +}; > + > /* SuoWoSi/South-holding JS201D with sn6140 */ > static const struct hda_pintbl cxt_pincfg_sws_js201d[] = { > { 0x16, 0x03211040 }, /* hp out */ > @@ -1006,6 +1013,10 @@ static const struct hda_fixup cxt_fixups[] = { > .type = HDA_FIXUP_PINS, > .v.pins = cxt_pincfg_sws_js201d, > }, > + [CXT_PINCFG_LENOVO_IDEAPAD_SLIM5_16AKP10] = { > + .type = HDA_FIXUP_PINS, > + .v.pins = cxt_pincfg_lenovo_ideapad_slim5_16akp10, > + }, > [CXT_PINCFG_TOP_SPEAKER] = { > .type = HDA_FIXUP_PINS, > .v.pins = (const struct hda_pintbl[]) { > @@ -1116,6 +1127,7 @@ static const struct hda_quirk cxt5066_fixups[] = { > SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo IdeaPad Z560", CXT_FIXUP_MUTE_LED_EAPD), > SND_PCI_QUIRK(0x17aa, 0x3905, "Lenovo G50-30", CXT_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC), > + SND_PCI_QUIRK(0x17aa, 0x38b6, "Lenovo IdeaPad Slim 5 16AKP10", CXT_PINCFG_LENOVO_IDEAPAD_SLIM5_16AKP10), > SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), > /* NOTE: we'd need to extend the quirk for 17aa:3977 as the same > * PCI SSID is used on multiple Lenovo models The table is sorted in PCI SSID order. Please try to put the entry at the right position. thanks, Takashi