Message ID | 20250204133209.403327-5-tzimmermann@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/ast: astdp: Improve mode handling | expand |
On 04/02/2025 14:26, Thomas Zimmermann wrote: > Validate each display mode against the astdp transmitter chips. Filters > out modes that the chip does not support. Thanks, it looks good to me. Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com> > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/ast/ast_dp.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c > index 056991afde7f..19c04687b0fe 100644 > --- a/drivers/gpu/drm/ast/ast_dp.c > +++ b/drivers/gpu/drm/ast/ast_dp.c > @@ -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,
diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c index 056991afde7f..19c04687b0fe 100644 --- a/drivers/gpu/drm/ast/ast_dp.c +++ b/drivers/gpu/drm/ast/ast_dp.c @@ -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,
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> --- drivers/gpu/drm/ast/ast_dp.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)