lkml.org 
[lkml]   [2020]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 76/99] ALSA: hda/realtek - Couldnt detect Mic if booting with headset plugged
    Date
    From: Hui Wang <hui.wang@canonical.com>

    commit 3f74249057827c5f6676c41c18f6be12ce1469ce upstream.

    We found a Mic detection issue on many Lenovo laptops, those laptops
    belong to differnt models and they have different audio design like
    internal mic connects to the codec or PCH, they all have this problem,
    the problem is if plugging a headset before powerup/reboot the
    machine, after booting up, the headphone could be detected but Mic
    couldn't. If we plug out and plug in the headset, both headphone and
    Mic could be detected then.

    Through debugging we found the codec on those laptops are same, it is
    alc257, and if we don't disable the 3k pulldown in alc256_shutup(),
    the issue will be fixed. So far there is no pop noise or power
    consumption regression on those laptops after this change.

    Cc: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20200914065118.19238-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/pci/hda/patch_realtek.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -3419,7 +3419,11 @@ static void alc256_shutup(struct hda_cod

    /* 3k pull low control for Headset jack. */
    /* NOTE: call this before clearing the pin, otherwise codec stalls */
    - alc_update_coef_idx(codec, 0x46, 0, 3 << 12);
    + /* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
    + * when booting with headset plugged. So skip setting it for the codec alc257
    + */
    + if (codec->core.vendor_id != 0x10ec0257)
    + alc_update_coef_idx(codec, 0x46, 0, 3 << 12);

    if (!spec->no_shutup_pins)
    snd_hda_codec_write(codec, hp_pin, 0,

    \
     
     \ /
      Last update: 2020-09-29 13:52    [W:4.580 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site