• Kuogee Hsieh's avatar
    drm/msm/dp: handle irq_hpd with sink_count = 0 correctly · f21c8a27
    Kuogee Hsieh authored
    irq_hpd interrupt should be handled after dongle plugged in and
    before dongle unplugged. Hence irq_hpd interrupt is enabled at
    the end of the plugin handle and disabled at the beginning of
    unplugged handle. Current irq_hpd with sink_count = 0 is wrongly
    handled same as the dongle unplugged which tears down the mainlink
    and disables the phy. This patch fixes this problem by only tearing
    down the mainlink but keeping phy enabled at irq_hpd with
    sink_count = 0 handle so that next irq_hpd with sink_count =1 can be
    handled by setup mainlink only. This patch also set dongle into D3
    (power off) state at end of handling irq_hpd with sink_count = 0.
    
    Changes in v2:
    -- add ctrl->phy_Power_count
    
    Changes in v3:
    -- del ctrl->phy_Power_count
    -- add phy_power_off to dp_ctrl_off_link_stream()
    
    Changes in v4:
    -- return immediately if clock disable failed at dp_ctrl_off_link_stream()
    
    Changes in v5:
    -- set dongle to D3 (power off) state at dp_ctrl_off_link_stream()
    
    Changes in v6:
    -- add Fixes tag
    
    Fixes: ea9f337c ("drm/msm/dp: reset dp controller only at boot up and pm_resume")
    Signed-off-by: default avatarKuogee Hsieh <khsieh@codeaurora.org>
    Tested-by: default avatarStephen Boyd <swboyd@chromium.org>
    Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/1621635930-30161-1-git-send-email-khsieh@codeaurora.orgSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
    f21c8a27
dp_ctrl.c 51.4 KB