MST requires the stream ID to select the SOFTWARE_MVID/NVID registers,
but msm_dp_ctrl_config_msa() currently has no access to it.

Pass panel to the function and derive the pixel clock and pixel format
from panel->msm_dp_mode, preparing for MST register programming.

No functional change.

Signed-off-by: Yongxing Mou <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_ctrl.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index 59070f399e2d..1ed713b957c6 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -2463,14 +2463,14 @@ static int msm_dp_ctrl_link_retrain(struct 
msm_dp_ctrl_private *ctrl,
 }
 
 static void msm_dp_ctrl_config_msa(struct msm_dp_ctrl_private *ctrl,
-                              u32 rate, u32 stream_rate_khz,
-                              bool is_ycbcr_420)
+                                  struct msm_dp_panel *panel, u32 rate)
 {
        u32 pixel_m, pixel_n;
        u32 mvid, nvid, pixel_div, dispcc_input_rate;
        u32 const nvid_fixed = DP_LINK_CONSTANT_N_VALUE;
        u32 const link_rate_hbr2 = 540000;
        u32 const link_rate_hbr3 = 810000;
+       u32 stream_rate_khz = panel->msm_dp_mode.drm_mode.clock;
        unsigned long den, num;
 
        switch (rate) {
@@ -2516,7 +2516,7 @@ static void msm_dp_ctrl_config_msa(struct 
msm_dp_ctrl_private *ctrl,
                nvid = temp;
        }
 
-       if (is_ycbcr_420)
+       if (panel->msm_dp_mode.out_fmt_is_yuv_420)
                mvid /= 2;
 
        if (link_rate_hbr2 == rate)
@@ -2573,15 +2573,13 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl 
*msm_dp_ctrl, struct msm_dp_panel *
        bool mainlink_ready = false;
        struct msm_dp_ctrl_private *ctrl;
        unsigned long pixel_rate;
-       unsigned long pixel_rate_orig;
 
        if (!msm_dp_ctrl)
                return -EINVAL;
 
        ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, 
msm_dp_ctrl);
 
-       pixel_rate_orig = panel->msm_dp_mode.drm_mode.clock;
-       pixel_rate = pixel_rate_orig;
+       pixel_rate = panel->msm_dp_mode.drm_mode.clock;
 
        if (msm_dp_ctrl->wide_bus_en || panel->msm_dp_mode.out_fmt_is_yuv_420)
                pixel_rate >>= 1;
@@ -2604,10 +2602,8 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl 
*msm_dp_ctrl, struct msm_dp_panel *
 
        msm_dp_ctrl_configure_source_params(ctrl, panel);
 
-       msm_dp_ctrl_config_msa(ctrl,
-               ctrl->link->link_params.rate,
-               pixel_rate_orig,
-               panel->msm_dp_mode.out_fmt_is_yuv_420);
+       msm_dp_ctrl_config_msa(ctrl, panel,
+               ctrl->link->link_params.rate);
 
        msm_dp_panel_clear_dsc_dto(panel);
 

-- 
2.43.0

Reply via email to