lkml.org 
[lkml]   [2021]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 31/56] ALSA: hda/realtek: call alc_update_headset_mode() in hp_automute_hook
    Date
    From: Hui Wang <hui.wang@canonical.com>

    commit e54f30befa7990b897189b44a56c1138c6bfdbb5 upstream.

    We found the alc_update_headset_mode() is not called on some machines
    when unplugging the headset, as a result, the mode of the
    ALC_HEADSET_MODE_UNPLUGGED can't be set, then the current_headset_type
    is not cleared, if users plug a differnt type of headset next time,
    the determine_headset_type() will not be called and the audio jack is
    set to the headset type of previous time.

    On the Dell machines which connect the dmic to the PCH, if we open
    the gnome-sound-setting and unplug the headset, this issue will
    happen. Those machines disable the auto-mute by ucm and has no
    internal mic in the input source, so the update_headset_mode() will
    not be called by cap_sync_hook or automute_hook when unplugging, and
    because the gnome-sound-setting is opened, the codec will not enter
    the runtime_suspend state, so the update_headset_mode() will not be
    called by alc_resume when unplugging. In this case the
    hp_automute_hook is called when unplugging, so add
    update_headset_mode() calling to this function.

    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20210320091542.6748-2-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 | 1 +
    1 file changed, 1 insertion(+)

    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -5054,6 +5054,7 @@ static void alc_update_headset_jack_cb(s
    struct alc_spec *spec = codec->spec;
    spec->current_headset_type = ALC_HEADSET_TYPE_UNKNOWN;
    snd_hda_gen_hp_automute(codec, jack);
    + alc_update_headset_mode(codec);
    }

    static void alc_probe_headset_mode(struct hda_codec *codec)

    \
     
     \ /
      Last update: 2021-04-05 11:06    [W:4.222 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site