Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: lcdif: Use adjusted_mode .clock instead of .crtc_clock

In case an upstream bridge modified the required clock frequency
in its .atomic_check callback by setting adjusted_mode.clock ,
make sure that clock frequency is generated by the LCDIFv3 block.

This is useful e.g. when LCDIFv3 feeds DSIM which feeds TC358767
with (e)DP output, where the TC358767 expects precise timing on
its input side, the precise timing must be generated by the LCDIF.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240531202813.277109-1-marex@denx.de

+2 -3
+2 -3
drivers/gpu/drm/mxsfb/lcdif_kms.c
··· 407 407 struct drm_display_mode *m = &crtc_state->adjusted_mode; 408 408 409 409 DRM_DEV_DEBUG_DRIVER(drm->dev, "Pixel clock: %dkHz (actual: %dkHz)\n", 410 - m->crtc_clock, 411 - (int)(clk_get_rate(lcdif->clk) / 1000)); 410 + m->clock, (int)(clk_get_rate(lcdif->clk) / 1000)); 412 411 DRM_DEV_DEBUG_DRIVER(drm->dev, "Bridge bus_flags: 0x%08X\n", 413 412 lcdif_crtc_state->bus_flags); 414 413 DRM_DEV_DEBUG_DRIVER(drm->dev, "Mode flags: 0x%08X\n", m->flags); ··· 537 538 struct drm_device *drm = lcdif->drm; 538 539 dma_addr_t paddr; 539 540 540 - clk_set_rate(lcdif->clk, m->crtc_clock * 1000); 541 + clk_set_rate(lcdif->clk, m->clock * 1000); 541 542 542 543 pm_runtime_get_sync(drm->dev); 543 544