mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 00:29:36 -04:00
drm/msm/dpu: move widebus logic to its own API
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_parellan@quicinc.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/579632/ Link: https://lore.kernel.org/r/20240222194025.25329-10-quic_parellan@quicinc.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
committed by
Dmitry Baryshkov
parent
ab2f8603e2
commit
1cfc64a6ea
@@ -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;
|
||||
|
||||
return dpu_enc->wide_bus_en;
|
||||
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 false;
|
||||
}
|
||||
|
||||
bool dpu_encoder_is_dsc_enabled(const struct drm_encoder *drm_enc)
|
||||
@@ -1209,26 +1221,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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user