Commit e72bbabd authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/ast: astdp: Validate display modes



Validate each display mode against the astdp transmitter chips. Filters
out modes that the chip does not support.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250204133209.403327-5-tzimmermann@suse.de
parent 9aed3a41
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -300,6 +300,19 @@ static const struct drm_encoder_funcs ast_astdp_encoder_funcs = {
	.destroy = drm_encoder_cleanup,
};

static enum drm_mode_status
ast_astdp_encoder_helper_mode_valid(struct drm_encoder *encoder,
				    const struct drm_display_mode *mode)
{
	int res;

	res = ast_astdp_get_mode_index(mode->hdisplay, mode->vdisplay);
	if (res < 0)
		return MODE_NOMODE;

	return MODE_OK;
}

static void ast_astdp_encoder_helper_atomic_mode_set(struct drm_encoder *encoder,
						     struct drm_crtc_state *crtc_state,
						     struct drm_connector_state *conn_state)
@@ -389,6 +402,7 @@ static int ast_astdp_encoder_helper_atomic_check(struct drm_encoder *encoder,
}

static const struct drm_encoder_helper_funcs ast_astdp_encoder_helper_funcs = {
	.mode_valid = ast_astdp_encoder_helper_mode_valid,
	.atomic_mode_set = ast_astdp_encoder_helper_atomic_mode_set,
	.atomic_enable = ast_astdp_encoder_helper_atomic_enable,
	.atomic_disable = ast_astdp_encoder_helper_atomic_disable,