drm/msm/dp: Use function arguments for timing configuration
authorBjorn Andersson <quic_bjorande@quicinc.com>
Thu, 28 Mar 2024 14:40:04 +0000 (07:40 -0700)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 22 Apr 2024 13:22:49 +0000 (16:22 +0300)
dp_catalog_panel_timing_cfg() takes 4 arguments, which are passed from
the calling function through members of struct dp_catalog.

No state is maintained other than across this call, so switch to
function arguments to clean up the code.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/585351/
Link: https://lore.kernel.org/r/20240328-msm-dp-cleanup-v2-5-a5aed9798d32@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/msm/dp/dp_catalog.c
drivers/gpu/drm/msm/dp/dp_catalog.h
drivers/gpu/drm/msm/dp/dp_panel.c

index 8e1e91d7f5164c6f5787e00e6239d9129c5704c1..f3ae3082ee2909ed311a8e2572493865c6e25f7e 100644 (file)
@@ -881,19 +881,17 @@ u32 dp_catalog_ctrl_read_phy_pattern(struct dp_catalog *dp_catalog)
 }
 
 /* panel related catalog functions */
-int dp_catalog_panel_timing_cfg(struct dp_catalog *dp_catalog)
+int dp_catalog_panel_timing_cfg(struct dp_catalog *dp_catalog, u32 total,
+                               u32 sync_start, u32 width_blanking, u32 dp_active)
 {
        struct dp_catalog_private *catalog = container_of(dp_catalog,
                                struct dp_catalog_private, dp_catalog);
        u32 reg;
 
-       dp_write_link(catalog, REG_DP_TOTAL_HOR_VER,
-                               dp_catalog->total);
-       dp_write_link(catalog, REG_DP_START_HOR_VER_FROM_SYNC,
-                               dp_catalog->sync_start);
-       dp_write_link(catalog, REG_DP_HSYNC_VSYNC_WIDTH_POLARITY,
-                               dp_catalog->width_blanking);
-       dp_write_link(catalog, REG_DP_ACTIVE_HOR_VER, dp_catalog->dp_active);
+       dp_write_link(catalog, REG_DP_TOTAL_HOR_VER, total);
+       dp_write_link(catalog, REG_DP_START_HOR_VER_FROM_SYNC, sync_start);
+       dp_write_link(catalog, REG_DP_HSYNC_VSYNC_WIDTH_POLARITY, width_blanking);
+       dp_write_link(catalog, REG_DP_ACTIVE_HOR_VER, dp_active);
 
        reg = dp_read_p0(catalog, MMSS_DP_INTF_CONFIG);
 
index 22a13eea3a8d8f895ddf414c78a9ea2ff12534c7..1f3ee34a1a5a8f17771cfe4961bc45f07b31b853 100644 (file)
@@ -48,10 +48,6 @@ enum dp_catalog_audio_header_type {
 };
 
 struct dp_catalog {
-       u32 total;
-       u32 sync_start;
-       u32 width_blanking;
-       u32 dp_active;
        enum dp_catalog_audio_sdp_type sdp_type;
        enum dp_catalog_audio_header_type sdp_header;
        u32 audio_data;
@@ -107,7 +103,8 @@ void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog *dp_catalog,
 u32 dp_catalog_ctrl_read_phy_pattern(struct dp_catalog *dp_catalog);
 
 /* DP Panel APIs */
-int dp_catalog_panel_timing_cfg(struct dp_catalog *dp_catalog);
+int dp_catalog_panel_timing_cfg(struct dp_catalog *dp_catalog, u32 total,
+                               u32 sync_start, u32 width_blanking, u32 dp_active);
 void dp_catalog_panel_enable_vsc_sdp(struct dp_catalog *dp_catalog, struct dp_sdp *vsc_sdp);
 void dp_catalog_panel_disable_vsc_sdp(struct dp_catalog *dp_catalog);
 void dp_catalog_dump_regs(struct dp_catalog *dp_catalog);
index 8e706945395275e5dde89c0ca57cac85121362c0..07db8f37cd06aa66493639c04adafc1212884796 100644 (file)
@@ -353,6 +353,10 @@ int dp_panel_timing_cfg(struct dp_panel *dp_panel)
        struct dp_catalog *catalog;
        struct dp_panel_private *panel;
        struct drm_display_mode *drm_mode;
+       u32 width_blanking;
+       u32 sync_start;
+       u32 dp_active;
+       u32 total;
 
        panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
        catalog = panel->catalog;
@@ -376,13 +380,13 @@ int dp_panel_timing_cfg(struct dp_panel *dp_panel)
        data <<= 16;
        data |= total_hor;
 
-       catalog->total = data;
+       total = data;
 
        data = (drm_mode->vtotal - drm_mode->vsync_start);
        data <<= 16;
        data |= (drm_mode->htotal - drm_mode->hsync_start);
 
-       catalog->sync_start = data;
+       sync_start = data;
 
        data = drm_mode->vsync_end - drm_mode->vsync_start;
        data <<= 16;
@@ -390,15 +394,15 @@ int dp_panel_timing_cfg(struct dp_panel *dp_panel)
        data |= drm_mode->hsync_end - drm_mode->hsync_start;
        data |= (panel->dp_panel.dp_mode.h_active_low << 15);
 
-       catalog->width_blanking = data;
+       width_blanking = data;
 
        data = drm_mode->vdisplay;
        data <<= 16;
        data |= drm_mode->hdisplay;
 
-       catalog->dp_active = data;
+       dp_active = data;
 
-       dp_catalog_panel_timing_cfg(catalog);
+       dp_catalog_panel_timing_cfg(catalog, total, sync_start, width_blanking, dp_active);
 
        if (dp_panel->dp_mode.out_fmt_is_yuv_420)
                dp_panel_setup_vsc_sdp_yuv_420(dp_panel);