The display layer directly assigns msm_dp_panel mode fields (bpp,
sync polarity, yuv420 flag) instead of letting the panel manage its
own state. Pass adjusted_mode and bpp as parameters to
msm_dp_panel_init_panel_info() and move the assignments inside it.

Suggested-by: Dmitry Baryshkov <[email protected]>
Signed-off-by: Yongxing Mou <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 11 +----------
 drivers/gpu/drm/msm/dp/dp_panel.c   | 18 +++++++++++++++---
 drivers/gpu/drm/msm/dp/dp_panel.h   |  4 +++-
 3 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 181d238addfc..f33c754b83c3 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -604,21 +604,12 @@ static int msm_dp_display_set_mode(struct msm_dp 
*msm_dp_display,
 
        dp = container_of(msm_dp_display, struct msm_dp_display_private, 
msm_dp_display);
 
-       drm_mode_copy(&msm_dp_panel->msm_dp_mode.drm_mode, adjusted_mode);
        if (msm_dp_display_check_video_test(msm_dp_display))
                bpp = msm_dp_display_get_test_bpp(msm_dp_display);
        else
                bpp = msm_dp_panel->connector->display_info.bpc * 3;
 
-       msm_dp_panel->msm_dp_mode.bpp = bpp ? bpp : 24; /* Default bpp */
-       msm_dp_panel->msm_dp_mode.v_active_low =
-               !!(adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC);
-       msm_dp_panel->msm_dp_mode.h_active_low =
-               !!(adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC);
-       msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 =
-               drm_mode_is_420_only(&msm_dp_panel->connector->display_info, 
adjusted_mode) &&
-               msm_dp_panel->vsc_sdp_supported;
-       msm_dp_panel_init_panel_info(msm_dp_panel);
+       msm_dp_panel_init_panel_info(msm_dp_panel, adjusted_mode, bpp ? bpp : 
24);
 
        /* populate wide_bus_support to different layers */
        dp->ctrl->wide_bus_en =
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c 
b/drivers/gpu/drm/msm/dp/dp_panel.c
index bde4a772d22c..e76dad0f6663 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.c
+++ b/drivers/gpu/drm/msm/dp/dp_panel.c
@@ -647,15 +647,27 @@ int msm_dp_panel_timing_cfg(struct msm_dp_panel 
*msm_dp_panel, bool wide_bus_en)
        return 0;
 }
 
-int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel)
+int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel,
+                                const struct drm_display_mode *adjusted_mode,
+                                u32 bpp)
 {
        struct drm_display_mode *drm_mode;
        struct msm_dp_panel_private *panel;
 
-       drm_mode = &msm_dp_panel->msm_dp_mode.drm_mode;
-
        panel = container_of(msm_dp_panel, struct msm_dp_panel_private, 
msm_dp_panel);
 
+       drm_mode_copy(&msm_dp_panel->msm_dp_mode.drm_mode, adjusted_mode);
+       msm_dp_panel->msm_dp_mode.bpp = bpp;
+       msm_dp_panel->msm_dp_mode.v_active_low =
+               !!(adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC);
+       msm_dp_panel->msm_dp_mode.h_active_low =
+               !!(adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC);
+       msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 =
+               drm_mode_is_420_only(&msm_dp_panel->connector->display_info, 
adjusted_mode) &&
+               msm_dp_panel->vsc_sdp_supported;
+
+       drm_mode = &msm_dp_panel->msm_dp_mode.drm_mode;
+
        /*
         * print resolution info as this is a result
         * of user initiated action of cable connection
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h 
b/drivers/gpu/drm/msm/dp/dp_panel.h
index 53b7b4463551..4519ac374220 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.h
+++ b/drivers/gpu/drm/msm/dp/dp_panel.h
@@ -43,7 +43,9 @@ struct msm_dp_panel {
        u32 max_bw_code;
 };
 
-int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel);
+int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel,
+                                const struct drm_display_mode *adjusted_mode,
+                                u32 bpp);
 int msm_dp_panel_deinit(struct msm_dp_panel *msm_dp_panel);
 int msm_dp_panel_timing_cfg(struct msm_dp_panel *msm_dp_panel, bool 
wide_bus_en);
 int msm_dp_panel_read_link_caps(struct msm_dp_panel *msm_dp_panel,

-- 
2.43.0

Reply via email to