[PATCH 04/10] drm/exynos/mixer: fix mode validation code
Tobias Jakobi
tjakobi at math.uni-bielefeld.de
Tue Sep 12 12:31:03 UTC 2017
Hello Andrzej,
Andrzej Hajda wrote:
> Mode limitation checked in mixer driver affects only older HW.
> Mixer in Exynos542x has no such limitations. While at it patch changes
> validation callback to recently introduced mode_valid which is more
> suitable for the check. Additionally little cleanup is performed.
Reviewed-by: Tobias Jakobi <tjakobi at math.uni-bielefeld.de>
And some small suggestion below.
> Signed-off-by: Andrzej Hajda <a.hajda at samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_mixer.c | 24 +++++++++++-------------
> 1 file changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index a87f60b..d530c18 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -1040,26 +1040,24 @@ static void mixer_disable(struct exynos_drm_crtc *crtc)
> clear_bit(MXR_BIT_POWERED, &ctx->flags);
> }
>
> -/* Only valid for Mixer version 16.0.33.0 */
> -static int mixer_atomic_check(struct exynos_drm_crtc *crtc,
> - struct drm_crtc_state *state)
> +static int mixer_mode_valid(struct exynos_drm_crtc *crtc,
> + const struct drm_display_mode *mode)
> {
> - struct drm_display_mode *mode = &state->adjusted_mode;
> - u32 w, h;
> + struct mixer_context *ctx = crtc->ctx;
> + u32 w = mode->hdisplay, h = mode->vdisplay;
>
> - w = mode->hdisplay;
> - h = mode->vdisplay;
> + DRM_DEBUG_KMS("xres=%d, yres=%d, refresh=%d, intl=%d\n", w, h,
> + mode->vrefresh, !!(mode->flags & DRM_MODE_FLAG_INTERLACE));
>
> - DRM_DEBUG_KMS("xres=%d, yres=%d, refresh=%d, intl=%d\n",
> - mode->hdisplay, mode->vdisplay, mode->vrefresh,
> - (mode->flags & DRM_MODE_FLAG_INTERLACE) ? 1 : 0);
> + if (ctx->mxr_ver == MXR_VER_128_0_0_184)
> + return MODE_OK;
>
> if ((w >= 464 && w <= 720 && h >= 261 && h <= 576) ||
> (w >= 1024 && w <= 1280 && h >= 576 && h <= 720) ||
> (w >= 1664 && w <= 1920 && h >= 936 && h <= 1080))
I think it would be nice to have these aligned.
> - return 0;
> + return MODE_OK;
>
> - return -EINVAL;
> + return MODE_BAD;
> }
>
> static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
> @@ -1071,7 +1069,7 @@ static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
> .update_plane = mixer_update_plane,
> .disable_plane = mixer_disable_plane,
> .atomic_flush = mixer_atomic_flush,
> - .atomic_check = mixer_atomic_check,
> + .mode_valid = mixer_mode_valid,
> };
>
> static const struct mixer_drv_data exynos5420_mxr_drv_data = {
>
More information about the dri-devel
mailing list