Commit fa9971d6 authored by Tobias Jakobi's avatar Tobias Jakobi Committed by Inki Dae

drm/exynos: fimd: harden fimd_calc_clkdiv()

Don't use the vrefresh field of the DRM mode since this
one is supposed to only be used for debug purpose.
Instead use the clock field which should also provide
much more precise information.

Also sanitize the case in which the clock value
should be zero. We then just default to the maximum
clock divisor.
Signed-off-by: default avatarTobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent fc173ae6
...@@ -397,9 +397,16 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc) ...@@ -397,9 +397,16 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc)
static u32 fimd_calc_clkdiv(struct fimd_context *ctx, static u32 fimd_calc_clkdiv(struct fimd_context *ctx,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
unsigned long ideal_clk = mode->htotal * mode->vtotal * mode->vrefresh; unsigned long ideal_clk;
u32 clkdiv; u32 clkdiv;
if (mode->clock == 0) {
DRM_ERROR("Mode has zero clock value.\n");
return 0xff;
}
ideal_clk = mode->clock * 1000;
if (ctx->i80_if) { if (ctx->i80_if) {
/* /*
* The frame done interrupt should be occurred prior to the * The frame done interrupt should be occurred prior to the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment