Hey Daniel, On 2015-05-19 16:06, Daniel Stone wrote: > Hi Tobias, > > On 19 May 2015 at 14:53, Tobias Jakobi <tjakobi at math.uni-bielefeld.de> > wrote: >> On 2015-05-18 23:02, Gustavo Padovan wrote: >>> So better try this. Ideally fimd_mode_fixup should go away too, I'll >>> do a >>> proper >>> patch once we know this works. >>> >>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c >>> b/drivers/gpu/drm/exynos/exynos_drm_fimd.c >>> index 12ab80c..363353b 100644 >>> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c >>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c >>> @@ -307,9 +307,17 @@ static void fimd_iommu_detach_devices(struct >>> fimd_context *ctx) >>> static u32 fimd_calc_clkdiv(struct fimd_context *ctx, >>> const struct drm_display_mode *mode) >>> { >>> - unsigned long ideal_clk = mode->htotal * mode->vtotal * >>> mode->vrefresh; >>> + unsigned long ideal_clk; >>> + int vrefresh; >>> u32 clkdiv; >>> >>> + if (mode->vrefresh == 0) >>> + vrefresh = drm_mode_vrefresh(mode); >>> + else >>> + vrefresh = mode->vrefresh; >>> + >>> + ideal_clk = mode->htotal * mode->vtotal * vrefresh; >>> + >>> if (ctx->i80_if) { >>> /* >>> * The frame done interrupt should be occurred prior >>> to >>> the >> >> I've applied this and the debug output patch, but I still get a >> div-by-zero. > > Can you please add a drm_mode_debug_printmodeline(mode) and give the > output there? I've also added printk for ideal_clk, here's the output.
kernel output: [ 81.204682] [drm:fimd_calc_clkdiv] vrefresh 0 [ 81.204700] [drm:drm_mode_debug_printmodeline] Modeline 0:"1366x768" 0 500 1366 1414 1446 1526 768 771 776 790 0x48 0x5 [ 81.204710] [drm:fimd_calc_clkdiv] ideal_clk 0 So vrefresh remains zero after all. With best wishes, Tobias > > Cheers, > Daniel