lkml.org 
[lkml]   [2021]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 38/76] ALSA: hda/realtek: Fix quirk for Clevo NJ51CU
    Date
    From: Werner Sembach <wse@tuxedocomputers.com>

    commit edca7cc4b0accfa69dc032442fe0684e59c691b8 upstream.

    The Clevo NJ51CU comes either with the ALC293 or the ALC256 codec, but uses
    the 0x8686 subproduct id in both cases. The ALC256 codec needs a different
    quirk for the headset microphone working and and edditional quirk for sound
    working after suspend and resume.

    When waking up from s3 suspend the Coef 0x10 is set to 0x0220 instead of
    0x0020 on the ALC256 codec. Setting the value manually makes the sound
    work again. This patch does this automatically.

    [ minor coding style fix by tiwai ]

    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Fixes: b5acfe152abaa ("ALSA: hda/realtek: Add some Clove SSID in the ALC293(ALC1220)")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211215191646.844644-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    sound/pci/hda/patch_realtek.c | 26 +++++++++++++++++++++++++-
    1 file changed, 25 insertions(+), 1 deletion(-)

    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -6492,6 +6492,23 @@ static void alc233_fixup_no_audio_jack(s
    alc_process_coef_fw(codec, alc233_fixup_no_audio_jack_coefs);
    }

    +static void alc256_fixup_mic_no_presence_and_resume(struct hda_codec *codec,
    + const struct hda_fixup *fix,
    + int action)
    +{
    + /*
    + * The Clevo NJ51CU comes either with the ALC293 or the ALC256 codec,
    + * but uses the 0x8686 subproduct id in both cases. The ALC256 codec
    + * needs an additional quirk for sound working after suspend and resume.
    + */
    + if (codec->core.vendor_id == 0x10ec0256) {
    + alc_update_coef_idx(codec, 0x10, 1<<9, 0);
    + snd_hda_codec_set_pincfg(codec, 0x19, 0x04a11120);
    + } else {
    + snd_hda_codec_set_pincfg(codec, 0x1a, 0x04a1113c);
    + }
    +}
    +
    enum {
    ALC269_FIXUP_GPIO2,
    ALC269_FIXUP_SONY_VAIO,
    @@ -6711,6 +6728,7 @@ enum {
    ALC256_FIXUP_SET_COEF_DEFAULTS,
    ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE,
    ALC233_FIXUP_NO_AUDIO_JACK,
    + ALC256_FIXUP_MIC_NO_PRESENCE_AND_RESUME,
    };

    static const struct hda_fixup alc269_fixups[] = {
    @@ -8429,6 +8447,12 @@ static const struct hda_fixup alc269_fix
    .type = HDA_FIXUP_FUNC,
    .v.func = alc233_fixup_no_audio_jack,
    },
    + [ALC256_FIXUP_MIC_NO_PRESENCE_AND_RESUME] = {
    + .type = HDA_FIXUP_FUNC,
    + .v.func = alc256_fixup_mic_no_presence_and_resume,
    + .chained = true,
    + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
    + },
    };

    static const struct snd_pci_quirk alc269_fixup_tbl[] = {
    @@ -8767,7 +8791,7 @@ static const struct snd_pci_quirk alc269
    SND_PCI_QUIRK(0x1558, 0x8562, "Clevo NH[5|7][0-9]RZ[Q]", ALC269_FIXUP_DMIC),
    SND_PCI_QUIRK(0x1558, 0x8668, "Clevo NP50B[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    SND_PCI_QUIRK(0x1558, 0x8680, "Clevo NJ50LU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    - SND_PCI_QUIRK(0x1558, 0x8686, "Clevo NH50[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    + SND_PCI_QUIRK(0x1558, 0x8686, "Clevo NH50[CZ]U", ALC256_FIXUP_MIC_NO_PRESENCE_AND_RESUME),
    SND_PCI_QUIRK(0x1558, 0x8a20, "Clevo NH55DCQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    SND_PCI_QUIRK(0x1558, 0x8a51, "Clevo NH70RCQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    SND_PCI_QUIRK(0x1558, 0x8d50, "Clevo NH55RCQ-M", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),

    \
     
     \ /
      Last update: 2021-12-27 16:42    [W:4.128 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site