Re: [PATCH] ALSA: hda/conexant - Fix audio routing for HP EliteOne 1000 G2

From: Takashi Iwai
Date: Wed Oct 09 2024 - 08:09:03 EST


On Wed, 09 Oct 2024 13:12:07 +0200,
Vasiliy Kovalev wrote:
>
> There is a problem with simultaneous audio output to headphones and
> speakers, and when headphones are turned off, the speakers also turn
> off and do not turn them on.
>
> However, it was found that if you boot linux immediately after windows,
> there are no such problems. When comparing alsa-info, the only difference
> is the different configuration of Node 0x1d:
>
> working conf. (windows): Pin-ctls: 0x80: HP
> not working (linux): Pin-ctls: 0xc0: OUT HP
>
> This patch disable the AC_PINCTL_OUT_EN bit of Node 0x1d and fixes the
> described problem.
>
> Signed-off-by: Vasiliy Kovalev <kovalev@xxxxxxxxxxxx>

Interesting, is this pin not used by any routes, but it has to be set
up? A bit more comments would be helpful for the quirk function.

In anyway, please give alsa-info.sh output. Run the script with
--no-upload option and attach the output.


thanks,

Takashi


> ---
> sound/pci/hda/patch_conexant.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
> index b61ce5e6f5ec5..47d1929184b2a 100644
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -303,6 +303,7 @@ enum {
> CXT_FIXUP_HP_SPECTRE,
> CXT_FIXUP_HP_GATE_MIC,
> CXT_FIXUP_MUTE_LED_GPIO,
> + CXT_FIXUP_HP_ELITEONE_OUT_DIS,
> CXT_FIXUP_HP_ZBOOK_MUTE_LED,
> CXT_FIXUP_HEADSET_MIC,
> CXT_FIXUP_HP_MIC_NO_PRESENCE,
> @@ -320,6 +321,17 @@ static void cxt_fixup_stereo_dmic(struct hda_codec *codec,
> spec->gen.inv_dmic_split = 1;
> }
>
> +static void cxt_fixup_out_disable(struct hda_codec *codec,
> + const struct hda_fixup *fix, int action)
> +{
> + if (action == HDA_FIXUP_ACT_PROBE) {
> + unsigned int val;
> +
> + val = snd_hda_codec_get_pin_target(codec, 0x1d);
> + snd_hda_set_pin_ctl(codec, 0x1d, val & (~AC_PINCTL_OUT_EN));
> + }
> +}
> +
> static void cxt5066_increase_mic_boost(struct hda_codec *codec,
> const struct hda_fixup *fix, int action)
> {
> @@ -971,6 +983,10 @@ static const struct hda_fixup cxt_fixups[] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = cxt_fixup_mute_led_gpio,
> },
> + [CXT_FIXUP_HP_ELITEONE_OUT_DIS] = {
> + .type = HDA_FIXUP_FUNC,
> + .v.func = cxt_fixup_out_disable,
> + },
> [CXT_FIXUP_HP_ZBOOK_MUTE_LED] = {
> .type = HDA_FIXUP_FUNC,
> .v.func = cxt_fixup_hp_zbook_mute_led,
> @@ -1061,6 +1077,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
> SND_PCI_QUIRK(0x103c, 0x83b2, "HP EliteBook 840 G5", CXT_FIXUP_HP_DOCK),
> SND_PCI_QUIRK(0x103c, 0x83b3, "HP EliteBook 830 G5", CXT_FIXUP_HP_DOCK),
> SND_PCI_QUIRK(0x103c, 0x83d3, "HP ProBook 640 G4", CXT_FIXUP_HP_DOCK),
> + SND_PCI_QUIRK(0x103c, 0x83e5, "HP EliteOne 1000 G2", CXT_FIXUP_HP_ELITEONE_OUT_DIS),
> SND_PCI_QUIRK(0x103c, 0x8402, "HP ProBook 645 G4", CXT_FIXUP_MUTE_LED_GPIO),
> SND_PCI_QUIRK(0x103c, 0x8427, "HP ZBook Studio G5", CXT_FIXUP_HP_ZBOOK_MUTE_LED),
> SND_PCI_QUIRK(0x103c, 0x844f, "HP ZBook Studio G5", CXT_FIXUP_HP_ZBOOK_MUTE_LED),
> --
> 2.33.8
>