[PATCH v3] drm/exynos: calculate vrefresh instead of use a fixed value
Tobias Jakobi
tjakobi at math.uni-bielefeld.de
Thu May 21 08:10:27 PDT 2015
Hey,
On 2015-05-21 16:06, Gustavo Padovan wrote:
> 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.
I'll try to send out something later this day.
With best wishes,
Tobias
>
> Gustavo
More information about the dri-devel
mailing list