From 60ae7e9b8dbdeeb3c6b73eedf18e25842673708b Mon Sep 17 00:00:00 2001 From: Boyuan Yan Date: Fri, 4 Aug 2023 08:53:23 +0530 Subject: [PATCH] disp: msm: dsi: correct external dsi bridge interface number Get the interface number from dsi panel timing node, if no timing node was set, set the number as ext_bridge_num. Change-Id: I1f36df6b5780f6eb1ef42e5b260cbdb16ec61c15 Signed-off-by: Boyuan Yan --- msm/dsi/dsi_display.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index ab8d25a37672..b75c465340b0 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -6349,6 +6349,9 @@ static int dsi_display_ext_get_info(struct drm_connector *connector, return -EINVAL; } + if (display->panel->num_timing_nodes) + return dsi_display_get_info(connector, info, disp); + mutex_lock(&display->display_lock); memset(info, 0, sizeof(struct msm_display_info)); @@ -6379,23 +6382,27 @@ static int dsi_display_ext_get_mode_info(struct drm_connector *connector, void *display, const struct msm_resource_caps_info *avail_res) { struct msm_display_topology *topology; + struct dsi_display *ext_display = (struct dsi_display *)display; if (!drm_mode || !mode_info || !avail_res || !avail_res->max_mixer_width) return -EINVAL; + if (ext_display->panel->num_timing_nodes) + return dsi_conn_get_mode_info(connector, drm_mode, + mode_info, display, avail_res); + memset(mode_info, 0, sizeof(*mode_info)); mode_info->frame_rate = drm_mode->vrefresh; mode_info->vtotal = drm_mode->vtotal; + mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_NONE; topology = &mode_info->topology; - topology->num_lm = (avail_res->max_mixer_width - <= drm_mode->hdisplay) ? 2 : 1; + topology->num_lm = ext_display->ctrl_count; + topology->num_enc = 0; topology->num_intf = topology->num_lm; - mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_NONE; - return 0; }