[PATCH v3] drm/exynos: calculate vrefresh instead of use a fixed value

Gustavo Padovan gustavo at padovan.org
Thu May 21 07:06:35 PDT 2015


Hi Tobias,

2015-05-21 Tobias Jakobi <tjakobi at math.uni-bielefeld.de>:

> Gustavo Padovan wrote:
> > From: Gustavo Padovan <gustavo.padovan at collabora.co.uk>
> > 
> > When mode's vrefresh is zero we should ask DRM core to calculate vrefresh
> > for us so we can get the correct value instead of relying on fixed value
> > defined in a macro. But if vrefresh is still zero we should fail the
> > update.
> This works better for me:
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> index dc834b8..26e8ae4 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> @@ -346,11 +346,16 @@ static bool fimd_mode_fixup(struct exynos_drm_crtc
> *crtc,
>  static void fimd_commit(struct exynos_drm_crtc *crtc)
>  {
>         struct fimd_context *ctx = crtc->ctx;
> -       struct drm_display_mode *mode = &crtc->base.mode;
> +       struct drm_display_mode *mode;
>         struct fimd_driver_data *driver_data = ctx->driver_data;
>         void *timing_base = ctx->regs + driver_data->timing_base;
>         u32 val, clkdiv;
> 
> +       if (crtc->base.state)
> +               mode = &crtc->base.state->adjusted_mode;
> +       else
> +               mode = &crtc->base.mode;
> +
>         if (ctx->suspended)
>                 return;
> 
> Otherwise I get an oops (nullptr deref) on boot, so 'state' is probably
> not initialized yet at this point.

Would you like to send a proper git patch of this? You can move the 
drm_mode_vrefresh() part to your patch.

	Gustavo


More information about the dri-devel mailing list