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: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250204133209.403327-5-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann
2025-02-04 14:26:40 +01:00
parent 9aed3a417d
commit e72bbabda3

View File

@@ -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,