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; }