Message ID | e0981726-6e05-6cff-eea6-bf10f23bc795@ostermaier.online (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Make snd-hda-intel work for newest HP laptop models with Realtek codec ALC245 and CSC3551 chipset | expand |
On Sat, 22 Jul 2023 16:44:01 +0200, Matthias Ostermaier wrote: > > > Hardware: > HP laptop models > - HP Dragonfly Folio 13.5 inch > - HP Envy x360 15-ew0xxx > - HP Envy 16-h0xxx > > all with codec Realtek ALC245 (ALC287 variant) and Cirrus Logic Smart > Amplifier chipset CSC3551) > codec vendor_id: 0x10ec0245, subsystem_id: 0x103c8a29, revision_id:0x100001 > > Kernel version: 6.2+ > > Output of alsa-info.sh attached (with the patch applied) > > Problem description: > The CSC3551 chipset does not get initialized correctly in aforementioned > laptop models. While the rest of snd-hda-intel recognizes the hardware > correctly, the smart amplifier does not get initialized so that the built-in > loudspeakers do not work. The patches originate from discussions and tests > under https://github.com/xoocoon/hp-15-ew0xxx-snd-fix. > > Patches: > ---------------------------------------------------------------------------- > --- sound/pci/hda/cs35l41_hda.c.orig 2023-07-22 15:43:12.016044919 +0200 > +++ sound/pci/hda/cs35l41_hda.c 2023-07-22 16:10:23.937995251 +0200 > @@ -1244,6 +1244,10 @@ > hw_cfg->bst_type = CS35L41_EXT_BOOST; > hw_cfg->gpio1.func = CS35l41_VSPK_SWITCH; > hw_cfg->gpio1.valid = true; > + } else if (strncmp(hid, "CSC3551", 7) == 0) { > + hw_cfg->bst_type = CS35L41_EXT_BOOST; > + hw_cfg->gpio1.func = CS35l41_VSPK_SWITCH; > + hw_cfg->gpio1.valid = true; > } else { > /* > * Note: CLSA010(0/1) are special cases which use a slightly > different design. Thanks for the patch, but note that this change can't be taken. It's dangerous and may burn speakers on other machines that don't use this configuration. For now, those info relies on the BIOS ACPI setup with _DSD entry, and vendors should fix it with BIOS updates. There have been already discussions how to deal with vendors who don't cooperate well, but the fix must be in a different form to be applied more safely. For example, see threads at: https://lore.kernel.org/all/SY4P282MB18352D4FD343A2E8290EA9BEE037A@SY4P282MB1835.AUSP282.PROD.OUTLOOK.COM/ > --- sound/pci/hda/patch_realtek.c.orig 2023-07-22 15:43:58.711204631 +0200 > +++ sound/pci/hda/patch_realtek.c 2023-07-22 15:51:23.224124227 +0200 > @@ -9452,6 +9452,9 @@ > SND_PCI_QUIRK(0x103c, 0x89c6, "Zbook Fury 17 G9", > ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED), > SND_PCI_QUIRK(0x103c, 0x89ca, "HP", > ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), > SND_PCI_QUIRK(0x103c, 0x89d3, "HP EliteBook 645 G9 (MB 89D2)", > ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), > + SND_PCI_QUIRK(0x103c, 0x8a06, "HP Dragonfly Folio 13.5 inch G3 2-in-1 > Notebook PC", ALC245_FIXUP_CS35L41_SPI_2), > + SND_PCI_QUIRK(0x103c, 0x8a29, "HP Envy x360 15-ew0xxx", > ALC287_FIXUP_CS35L41_I2C_2), > + SND_PCI_QUIRK(0x103c, 0x8a2c, "HP Envy 16-h0xxx", Those quirk entries look OK, though. Adding Cirrus people to Cc for further checking. thanks, Takashi
--- sound/pci/hda/cs35l41_hda.c.orig 2023-07-22 15:43:12.016044919 +0200 +++ sound/pci/hda/cs35l41_hda.c 2023-07-22 16:10:23.937995251 +0200 @@ -1244,6 +1244,10 @@ hw_cfg->bst_type = CS35L41_EXT_BOOST; hw_cfg->gpio1.func = CS35l41_VSPK_SWITCH; hw_cfg->gpio1.valid = true; + } else if (strncmp(hid, "CSC3551", 7) == 0) { + hw_cfg->bst_type = CS35L41_EXT_BOOST; + hw_cfg->gpio1.func = CS35l41_VSPK_SWITCH; + hw_cfg->gpio1.valid = true; } else { /* * Note: CLSA010(0/1) are special cases which use a slightly