Re: [PATCH v13 3/4] drm/atomic-helper: Re-order bridge chain pre-enable and post-disable

From: Tomi Valkeinen
Date: Wed Jun 18 2025 - 12:29:00 EST


On 18/06/2025 13:01, Marek Szyprowski wrote:

> I've finally found where is the problem! It turned out that the issue is
> in the exynos_drm_fimd driver, in the code for enabling the display port
> clock (fimd_dp_clock_enable()
>  function). It touches FIMD regs, but it was not guarded with FIMD's
> runtime pm calls and after the $subject change it happened that
> exynos_dp/analogix_dp code called the clock enable/disable when FIMD
> driver (which implements the CRTC object) was not runtime resumed.
> Previously all dp clock handling was done when CRTC was enabled, thus
> the FIMD device was in the resumed runtime pm state.

We have another issue the this patch: i.MX8MM (and MP) seem to have a
problem with DSI, which is using the samsung-dsim.c driver. For me, the
first time I run kmstest I get a black screen. The second time I get a
display, but it's horizontally in the wrong place.

Perhaps you have an idea about this if you're familiar with the
samsung-dsim?.

The issue seems to be that earlier the order was:

mxsfb_crtc_atomic_enable()
samsung_dsim_atomic_pre_enable()
samsung_dsim_atomic_enable()

now the order is:

samsung_dsim_atomic_pre_enable()
mxsfb_crtc_atomic_enable()
samsung_dsim_atomic_enable()

If I move the samsung_dsim_init() call from
samsung_dsim_atomic_pre_enable() to samsung_dsim_atomic_enable(), it
starts to work.

My guess is that the DSI init requires a pixel stream from the crtc, and
now that the (pre)init is done without the pixel stream, it goes wrong.
But this is purely a guess so far.

I also see that the samsung_dsim_init() call is behind
"!samsung_dsim_hw_is_exynos()", so you probably don't hit this issue...

Tomi