Widebus enablement is decided by the interfaces based on their specific
checks and that already happens with DSI/DP specific helpers. Let's
invoke these helpers from dpu_encoder_is_widebus_enabled() to make it
cleaner overall.

Signed-off-by: Paloma Arellano <quic_parel...@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 29 ++++++++++++---------
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h |  4 +++
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 1905e8653b77a..b53a1b545742b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -221,9 +221,21 @@ static u32 dither_matrix[DITHER_MATRIX_SZ] = {
 
 bool dpu_encoder_is_widebus_enabled(const struct drm_encoder *drm_enc)
 {
-       const struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc);
+       const struct dpu_encoder_virt *dpu_enc;
+       struct msm_drm_private *priv = drm_enc->dev->dev_private;
+       const struct msm_display_info *disp_info;
+       int index;
+
+       dpu_enc = to_dpu_encoder_virt(drm_enc);
+       disp_info = &dpu_enc->disp_info;
+       index = disp_info->h_tile_instance[0];
+
+       if (disp_info->intf_type == INTF_DP)
+               return msm_dp_wide_bus_available(priv->dp[index]);
+       else if (disp_info->intf_type == INTF_DSI)
+               return msm_dsi_wide_bus_enabled(priv->dsi[index]);
 
-       return dpu_enc->wide_bus_en;
+       return false;
 }
 
 bool dpu_encoder_is_dsc_enabled(const struct drm_encoder *drm_enc)
@@ -1195,26 +1207,17 @@ static void dpu_encoder_virt_atomic_enable(struct 
drm_encoder *drm_enc,
        struct dpu_encoder_virt *dpu_enc = NULL;
        int ret = 0;
        struct drm_display_mode *cur_mode = NULL;
-       struct msm_drm_private *priv = drm_enc->dev->dev_private;
-       struct msm_display_info *disp_info;
-       int index;
 
        dpu_enc = to_dpu_encoder_virt(drm_enc);
-       disp_info = &dpu_enc->disp_info;
-       index = disp_info->h_tile_instance[0];
-
        dpu_enc->dsc = dpu_encoder_get_dsc_config(drm_enc);
 
        atomic_set(&dpu_enc->frame_done_timeout_cnt, 0);
 
-       if (disp_info->intf_type == INTF_DP)
-               dpu_enc->wide_bus_en = 
msm_dp_wide_bus_available(priv->dp[index]);
-       else if (disp_info->intf_type == INTF_DSI)
-               dpu_enc->wide_bus_en = 
msm_dsi_wide_bus_enabled(priv->dsi[index]);
-
        mutex_lock(&dpu_enc->enc_lock);
        cur_mode = &dpu_enc->base.crtc->state->adjusted_mode;
 
+       dpu_enc->wide_bus_en = dpu_encoder_is_widebus_enabled(drm_enc);
+
        trace_dpu_enc_enable(DRMID(drm_enc), cur_mode->hdisplay,
                             cur_mode->vdisplay);
 
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
index fe6b1d312a742..67aef59c1f99c 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
@@ -156,6 +156,10 @@ int dpu_encoder_get_linecount(struct drm_encoder *drm_enc);
  */
 int dpu_encoder_get_vsync_count(struct drm_encoder *drm_enc);
 
+/**
+ * dpu_encoder_is_widebus_enabled - return bool value if widebus is enabled
+ * @drm_enc:    Pointer to previously created drm encoder structure
+ */
 bool dpu_encoder_is_widebus_enabled(const struct drm_encoder *drm_enc);
 
 /**
-- 
2.39.2

Reply via email to