On Thu, 14 Nov 2024 17:41:19 +0100,
Hridesh MG wrote:
>
> The headset jack on the realtek ALC287 codec for the Acer Nitro 5
> AN515-58 laptop requires a fixup to detect microphone input.
>
> The required pin config and verbs were obtained by reverse engineering
> the windows driver using RtHD dump.
>
> Signed-off-by: Hridesh MG <hridesh699@xxxxxxxxx>
> ---
> sound/pci/hda/patch_realtek.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 571fa8a6c9e1204892a93ffb24acce65400ce4b2..0204ed80791db87153dad80d6a25466985ce5784 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -7780,6 +7780,8 @@ enum {
> ALC287_FIXUP_LENOVO_SSID_17AA3820,
> ALC245_FIXUP_CLEVO_NOISY_MIC,
> ALC269_FIXUP_VAIO_VJFH52_MIC_NO_PRESENCE,
> + ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_PIN,
> + ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_VERBS,
> };
>
> /* A special fixup for Lenovo C940 and Yoga Duet 7;
> @@ -10154,6 +10156,23 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
> },
> + [ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_PIN] = {
> + .type = HDA_FIXUP_PINS,
> + .chained = true,
> + .chain_id = ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_VERBS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x19, 0x03a19020 }, /* missing pin for headphone jack mic */
This looks fine, but...
> + { }
> + }
> + },
> + [ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_VERBS] = {
> + .type = HDA_FIXUP_VERBS,
> + .v.verbs = (const struct hda_verb[]) {
> + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 },
> + { 0x20, AC_VERB_SET_PROC_COEF, 0xD689 },
This is a generic setup for the headset input in CTIA mode.
Do you really need this explicity? Usually it's set up at
alc_headset_mode_ctia() when the iPhone type is connected.
> static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> @@ -10201,6 +10220,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC),
> SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED),
> + SND_PCI_QUIRK(0x1025, 0x159c, "Acer Nitro 5 AN515-58", ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_PIN),
The table is sorted in PCI SSID order. Please put at the right
place.
> + {.id = ALC_287_FIXUP_ACER_NITRO_HEADSET_MIC_PIN, .name = "alc287-fixup-acer-nitro-headset-mic"},
Nowadays the less need for a new model name string. You can specify
the model with an alias of SSID if any other device needs to apply the
same quirk, too. So, unless it's mandatory, better to drop.
thanks,
Takashi
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]