lkml.org 
[lkml]   [2020]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 68/88] ALSA: hda/hdmi: always check pin power status in i915 pin fixup
    Date
    From: Kai Vehmanen <kai.vehmanen@linux.intel.com>

    commit 858e0ad9301d1270c02b5aca97537d2d6ee9dd68 upstream.

    When system is suspended with active audio playback to HDMI/DP, two
    alternative sequences can happen at resume:
    a) monitor is detected first and ALSA prepare follows normal
    stream setup sequence, or
    b) ALSA prepare is called first, but monitor is not yet detected,
    so PCM is restarted without a pin,

    In case of (b), on i915 systems, haswell_verify_D0() is not called at
    resume and the pin power state may be incorrect. Result is lack of audio
    after resume with no error reported back to user-space.

    Fix the problem by always verifying converter and pin state in the
    i915_pin_cvt_fixup().

    BugLink: https://github.com/thesofproject/linux/issues/2388
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200826170306.701566-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/pci/hda/patch_hdmi.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/sound/pci/hda/patch_hdmi.c
    +++ b/sound/pci/hda/patch_hdmi.c
    @@ -2574,6 +2574,7 @@ static void i915_pin_cvt_fixup(struct hd
    hda_nid_t cvt_nid)
    {
    if (per_pin) {
    + haswell_verify_D0(codec, per_pin->cvt_nid, per_pin->pin_nid);
    snd_hda_set_dev_select(codec, per_pin->pin_nid,
    per_pin->dev_id);
    intel_verify_pin_cvt_connect(codec, per_pin);

    \
     
     \ /
      Last update: 2020-09-08 20:31    [W:4.164 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site