disp: msm: remove use of drm_display_mode vrefresh
Use of drm_display_mode vrefresh is being deprecated in upstream DRM framework. Downstream driver need to use drm_mode_vrefresh API from now on. This change removes dependency on drm_display_mode vrefresh and replaces it with drm_mode_vrefresh API in SDE, DSI and DP driver. In addition, it also modifies drm_display_mode clock to align with upstream approach where an uncompressed mode clock is required to match drm_mode_vrefresh API. Change-Id: Ie972a2e140adfd81c4e68df8e7bc69feaaca22e1 Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org> Signed-off-by: Amine Najahi <anajahi@codeaurora.org>
This commit is contained in:
@@ -51,9 +51,7 @@ static void convert_to_dsi_mode(const struct drm_display_mode *drm_mode,
|
||||
dsi_mode->timing.v_front_porch = drm_mode->vsync_start -
|
||||
drm_mode->vdisplay;
|
||||
|
||||
dsi_mode->timing.refresh_rate = drm_mode->vrefresh;
|
||||
|
||||
dsi_mode->pixel_clk_khz = drm_mode->clock;
|
||||
dsi_mode->timing.refresh_rate = drm_mode_vrefresh(drm_mode);
|
||||
|
||||
dsi_mode->timing.h_sync_polarity =
|
||||
!!(drm_mode->flags & DRM_MODE_FLAG_PHSYNC);
|
||||
@@ -123,8 +121,8 @@ void dsi_convert_to_drm_mode(const struct dsi_display_mode *dsi_mode,
|
||||
dsi_mode->timing.v_sync_width;
|
||||
drm_mode->vtotal = drm_mode->vsync_end + dsi_mode->timing.v_back_porch;
|
||||
|
||||
drm_mode->vrefresh = dsi_mode->timing.refresh_rate;
|
||||
drm_mode->clock = dsi_mode->pixel_clk_khz;
|
||||
drm_mode->clock = drm_mode->htotal * drm_mode->vtotal * dsi_mode->timing.refresh_rate;
|
||||
drm_mode->clock /= 1000;
|
||||
|
||||
if (dsi_mode->timing.h_sync_polarity)
|
||||
drm_mode->flags |= DRM_MODE_FLAG_PHSYNC;
|
||||
@@ -132,9 +130,9 @@ void dsi_convert_to_drm_mode(const struct dsi_display_mode *dsi_mode,
|
||||
drm_mode->flags |= DRM_MODE_FLAG_PVSYNC;
|
||||
|
||||
/* set mode name */
|
||||
snprintf(drm_mode->name, DRM_DISPLAY_MODE_LEN, "%dx%dx%dx%d%s",
|
||||
snprintf(drm_mode->name, DRM_DISPLAY_MODE_LEN, "%dx%dx%dx%u%s",
|
||||
drm_mode->hdisplay, drm_mode->vdisplay,
|
||||
drm_mode->vrefresh, drm_mode->clock,
|
||||
drm_mode_vrefresh(drm_mode), dsi_mode->pixel_clk_khz,
|
||||
panel_caps);
|
||||
}
|
||||
|
||||
@@ -421,6 +419,7 @@ static bool dsi_bridge_mode_fixup(struct drm_bridge *bridge,
|
||||
}
|
||||
|
||||
convert_to_dsi_mode(mode, &dsi_mode);
|
||||
msm_parse_mode_priv_info(&conn_state->msm_mode, &dsi_mode);
|
||||
|
||||
/*
|
||||
* retrieve dsi mode from dsi driver's cache since not safe to take
|
||||
@@ -536,7 +535,7 @@ u64 dsi_drm_find_bit_clk_rate(void *display,
|
||||
if ((dsi_mode->timing.v_active == drm_mode->vdisplay) &&
|
||||
(dsi_mode->timing.h_active == drm_mode->hdisplay) &&
|
||||
(dsi_mode->pixel_clk_khz == drm_mode->clock) &&
|
||||
(dsi_mode->timing.refresh_rate == drm_mode->vrefresh)) {
|
||||
(dsi_mode->timing.refresh_rate == drm_mode_vrefresh(drm_mode))) {
|
||||
bit_clk_rate = dsi_mode->timing.clk_rate_hz;
|
||||
break;
|
||||
}
|
||||
@@ -571,7 +570,7 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
|
||||
mode_info->jitter_numer = dsi_mode->priv_info->panel_jitter_numer;
|
||||
mode_info->jitter_denom = dsi_mode->priv_info->panel_jitter_denom;
|
||||
mode_info->dfps_maxfps = dsi_drm_get_dfps_maxfps(display);
|
||||
mode_info->clk_rate = dsi_drm_find_bit_clk_rate(display, drm_mode);
|
||||
mode_info->clk_rate = dsi_mode->timing.clk_rate_hz;
|
||||
mode_info->panel_mode_caps = dsi_mode->panel_mode_caps;
|
||||
mode_info->mdp_transfer_time_us =
|
||||
dsi_mode->priv_info->mdp_transfer_time_us;
|
||||
@@ -1004,6 +1003,7 @@ enum drm_mode_status dsi_conn_mode_valid(struct drm_connector *connector,
|
||||
{
|
||||
struct dsi_display_mode dsi_mode;
|
||||
struct dsi_display_mode *full_dsi_mode = NULL;
|
||||
struct sde_connector_state *conn_state;
|
||||
int rc;
|
||||
|
||||
if (!connector || !mode) {
|
||||
@@ -1012,6 +1012,11 @@ enum drm_mode_status dsi_conn_mode_valid(struct drm_connector *connector,
|
||||
}
|
||||
|
||||
convert_to_dsi_mode(mode, &dsi_mode);
|
||||
|
||||
conn_state = to_sde_connector_state(connector->state);
|
||||
if (conn_state)
|
||||
msm_parse_mode_priv_info(&conn_state->msm_mode, &dsi_mode);
|
||||
|
||||
rc = dsi_display_find_mode(display, &dsi_mode, &full_dsi_mode);
|
||||
if (rc) {
|
||||
DSI_ERR("could not find mode %s\n", mode->name);
|
||||
|
Reference in New Issue
Block a user