[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