Browse Source

disp: msm: dp: ensure failsafe mode in connector mode list

The dp driver inserts a failsafe mode to be in alginment with
DP specification.

This change ensures that the added failsafe mode does not
get filtered out when a specific mode is selected via
the debugfs functions.

Change-Id: I56039527eaf77111c6a51a40d1ea143fa0693a70
Signed-off-by: Nisarg Bhavsar <[email protected]>
Nisarg Bhavsar 1 year ago
parent
commit
7be22cc1e7
2 changed files with 10 additions and 0 deletions
  1. 5 0
      msm/dp/dp_drm.c
  2. 5 0
      msm/dp/dp_mst_drm.c

+ 5 - 0
msm/dp/dp_drm.c

@@ -726,12 +726,17 @@ enum drm_mode_status dp_connector_mode_valid(struct drm_connector *connector,
 		return MODE_ERROR;
 		return MODE_ERROR;
 	}
 	}
 
 
+	/* As per spec, failsafe mode should always be present */
+	if ((mode->hdisplay == 640) && (mode->vdisplay == 480) && (mode->clock == 25175))
+		goto validate_mode;
+
 	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
 	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
 			mode->vdisplay != dp_panel->vdisplay ||
 			mode->vdisplay != dp_panel->vdisplay ||
 			vrefresh != dp_panel->vrefresh ||
 			vrefresh != dp_panel->vrefresh ||
 			mode->picture_aspect_ratio != dp_panel->aspect_ratio))
 			mode->picture_aspect_ratio != dp_panel->aspect_ratio))
 		return MODE_BAD;
 		return MODE_BAD;
 
 
+validate_mode:
 	return dp_disp->validate_mode(dp_disp, sde_conn->drv_panel,
 	return dp_disp->validate_mode(dp_disp, sde_conn->drv_panel,
 			mode, &avail_dp_res);
 			mode, &avail_dp_res);
 }
 }

+ 5 - 0
msm/dp/dp_mst_drm.c

@@ -1309,6 +1309,10 @@ enum drm_mode_status dp_mst_connector_mode_valid(
 
 
 	vrefresh = drm_mode_vrefresh(mode);
 	vrefresh = drm_mode_vrefresh(mode);
 
 
+	/* As per spec, failsafe mode should always be present */
+	if ((mode->hdisplay == 640) && (mode->vdisplay == 480) && (mode->clock == 25175))
+		goto validate_mode;
+
 	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
 	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
 			mode->vdisplay != dp_panel->vdisplay ||
 			mode->vdisplay != dp_panel->vdisplay ||
 			vrefresh != dp_panel->vrefresh ||
 			vrefresh != dp_panel->vrefresh ||
@@ -1347,6 +1351,7 @@ enum drm_mode_status dp_mst_connector_mode_valid(
 		return MODE_BAD;
 		return MODE_BAD;
 	}
 	}
 
 
+validate_mode:
 	return dp_display->validate_mode(dp_display, dp_panel, mode, avail_res);
 	return dp_display->validate_mode(dp_display, dp_panel, mode, avail_res);
 }
 }