drm/exynos: fimd: vrefresh is zero

Tobias Jakobi tjakobi at math.uni-bielefeld.de
Mon May 2 14:30:37 UTC 2016


Hello Alex,


Alex Deucher wrote:
> On Sat, Apr 30, 2016 at 5:37 PM, Tobias Jakobi
> <tjakobi at math.uni-bielefeld.de> wrote:
>> Hello,
>>
>> while playing around with FIMD enabled, I noticed that when first using
>> the device a zero division was triggered in fimd_calc_clkdiv(). I
>> remembered that I had a similar issue some time ago.
>>
>> I added a stub fimd_atomic_check() which shows that vrefresh is zero
>> when fimd_calc_clkdiv() is called.
>>
>> [  164.059361] [drm:exynos_plane_mode_set] plane : offset_x/y(0,0),
>> width/height(1366,768)
>> [  164.067175] [drm:fimd_atomic_check] xres=1366, yres=768, refresh=0,
>> intl=0
>> [  164.074198] [drm:drm_atomic_helper_check_planes] [CRTC:24:crtc-0]
>> atomic driver check failed
>>
>> I went back to the git log and noticed that some time ago in
>> 50bbfbffa5c894def440ce8157dfe53e60960d35 the fimd_mode_fixup() call was
>> removed.
>>
>> I'm now wondering where exactly vrefresh is set to a sane value. As far
>> as I can see of_get_videomode() is used to fetch the video mode from the
>> DT, and drm_display_mode_from_videomode() is used to convert it. However
>> vrefresh is nowhere set.
>>
>> So is something broken here, or am I missing something?
>>
> 
> There is no guarantee that vrefresh is actually set.  I think the only
> way to reliably get it is to call drm_mode_vrefresh().
Well, my impression from studying the code currently is that vrefresh is
_never_ set. In particular the Exynos specific DRM code only ever reads
vrefresh.

I was just wondering how this is supposed to function at all.

- Tobias


> 
> 
> Alex
> 



More information about the dri-devel mailing list