Add connector helper hooks to check if mode is valid or not. We add this restriction to make sure mode is 3840x2160 60Hz.
Signed-off-by: Suraj Kandpal <suraj.kand...@intel.com> --- .../gpu/drm/i915/display/intel_writeback.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_writeback.c b/drivers/gpu/drm/i915/display/intel_writeback.c index 7df99771fd6f..ff5f15ce3f5f 100644 --- a/drivers/gpu/drm/i915/display/intel_writeback.c +++ b/drivers/gpu/drm/i915/display/intel_writeback.c @@ -75,6 +75,25 @@ intel_writeback_connector_alloc(struct intel_connector *connector) return 0; } +static enum drm_mode_status +intel_writeback_mode_valid(struct drm_connector *_connector, + const struct drm_display_mode *mode) +{ + int refresh_rate; + + if (mode->hdisplay > 3840) + return MODE_H_ILLEGAL; + + if (mode->vdisplay > 2160) + return MODE_V_ILLEGAL; + + refresh_rate = drm_mode_vrefresh(mode); + if (refresh_rate > 60) + return MODE_BAD; + + return MODE_OK; +} + static int intel_writeback_get_modes(struct drm_connector *connector) { return drm_add_modes_noedid(connector, 3840, 2160); @@ -112,6 +131,7 @@ const struct drm_connector_funcs conn_funcs = { static const struct drm_connector_helper_funcs conn_helper_funcs = { .get_writeback_connector = intel_get_writeback_connector, .get_modes = intel_writeback_get_modes, + .mode_valid = intel_writeback_mode_valid, }; static const struct drm_writeback_connector_helper_funcs writeback_conn_helper_funcs = { -- 2.34.1