From: Abhinav Kumar <[email protected]>

Split dp_ctrl_off() into stream and link parts so that for MST
cases we can control the link and pixel parts separately.

Signed-off-by: Abhinav Kumar <[email protected]>
Signed-off-by: Yongxing Mou <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_ctrl.c    | 10 +++++-----
 drivers/gpu/drm/msm/dp/dp_ctrl.h    |  5 +++--
 drivers/gpu/drm/msm/dp/dp_display.c |  7 ++++---
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index 902a6f5d181d..c88929d1fbab 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -2212,7 +2212,7 @@ static int msm_dp_ctrl_on_pixel_clk(struct 
msm_dp_ctrl_private *ctrl, unsigned l
        return ret;
 }
 
-static void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl)
+void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl)
 {
        struct msm_dp_ctrl_private *ctrl;
 
@@ -2241,7 +2241,8 @@ static int msm_dp_ctrl_process_phy_test_request(struct 
msm_dp_ctrl_private *ctrl
         * running. Add the global reset just before disabling the
         * link clocks and core clocks.
         */
-       msm_dp_ctrl_off(&ctrl->msm_dp_ctrl, panel);
+       msm_dp_ctrl_off_pixel_clk(&ctrl->msm_dp_ctrl);
+       msm_dp_ctrl_off_link(&ctrl->msm_dp_ctrl, panel);
 
        ret = msm_dp_ctrl_on_link(&ctrl->msm_dp_ctrl, panel);
        if (ret) {
@@ -2635,8 +2636,8 @@ void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl 
*msm_dp_ctrl)
        phy_init(phy);
 }
 
-void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl,
-                    struct msm_dp_panel *panel)
+void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl,
+                         struct msm_dp_panel *panel)
 {
        struct msm_dp_ctrl_private *ctrl;
        struct phy *phy;
@@ -2650,7 +2651,6 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl,
 
        msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl, panel);
 
-       msm_dp_ctrl_off_pixel_clk(msm_dp_ctrl);
        dev_pm_opp_set_rate(ctrl->dev, 0);
        msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl);
 
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_ctrl.h
index 00b430392a52..5902cf7e746a 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.h
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h
@@ -22,8 +22,9 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, 
struct msm_dp_panel *
 int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl,
                                  struct msm_dp_panel *panel,
                                  bool force_link_train);
-void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl,
-                    struct msm_dp_panel *panel);
+void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl,
+                         struct msm_dp_panel *panel);
+void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl);
 void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl);
 irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl,
                            struct msm_dp_panel *panel);
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 230e14615a23..8f472633da82 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -725,15 +725,16 @@ static int msm_dp_display_disable(struct 
msm_dp_display_private *dp)
 
                /* set dongle to D3 (power off) mode */
                msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true);
-               msm_dp_ctrl_off(dp->ctrl, dp->panel);
-               /* re-init the PHY so that we can listen to Dongle disconnect */
+               msm_dp_ctrl_off_pixel_clk(dp->ctrl);
+               msm_dp_ctrl_off_link(dp->ctrl, dp->panel);
                msm_dp_ctrl_reinit_phy(dp->ctrl);
        } else {
                /*
                 * unplugged interrupt
                 * dongle unplugged out of DUT
                 */
-               msm_dp_ctrl_off(dp->ctrl, dp->panel);
+               msm_dp_ctrl_off_pixel_clk(dp->ctrl);
+               msm_dp_ctrl_off_link(dp->ctrl, dp->panel);
                msm_dp_display_host_phy_exit(dp);
        }
 

-- 
2.43.0

Reply via email to