• Hui Wang's avatar
    ALSA: hda/hdmi - Consider eld_valid when reporting jack event · 7f641e26
    Hui Wang authored
    On the machines with AMD GPU or Nvidia GPU, we often meet this issue:
    after s3, there are 4 HDMI/DP audio devices in the gnome-sound-setting
    even there is no any monitors plugged.
    
    When this problem happens, we check the /proc/asound/cardX/eld#N.M, we
    will find the monitor_present=1, eld_valid=0.
    
    The root cause is BIOS or GPU driver makes the PRESENCE valid even no
    monitor plugged, and of course the driver will not get the valid
    eld_data subsequently.
    
    In this situation, we should not report the jack_plugged event, to do
    so, let us change the function hdmi_present_sense_via_verbs(). In this
    function, it reads the pin_sense via snd_hda_pin_sense(), after
    calling this function, the jack_dirty is 0, and before exiting
    via_verbs(), we change the shadow pin_sense according to both
    monitor_present and eld_valid, then in the snd_hda_jack_report_sync(),
    since the jack_dirty is still 0, it will report jack event according
    to this modified shadow pin_sense.
    
    After this change, the driver will not report Jack_is_plugged event
    through hdmi_present_sense_via_verbs() if monitor_present is 1 and
    eld_valid is 0.
    Signed-off-by: default avatarHui Wang <hui.wang@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    7f641e26
patch_hdmi.c 107 KB