Re: [PATCH v3 2/2] drm/imx: replace struct drm_simple_display_pipe with regular atomic helpers
From: Ze Huang
Date: Fri Sep 18 2026 - 11:38:36 EST
On Wed Sep 16, 2026 at 2:50 PM CST, Thomas Zimmermann wrote:
> Hi
>
> Am 26.07.26 um 21:42 schrieb Ze Huang:
>> Convert i.MX LCDC to explicit primary plane, CRTC and encoder objects.
>> Keep no-scaling plane check and GEM framebuffer prepare callback from
>> simple-KMS path.
>>
>> Wire the vblank lifecycle explicitly with CRTC vblank callbacks and
>> drm_crtc_vblank_on()/drm_crtc_vblank_off(). Use the old CRTC state in the
>> disable path for clock unwinding so the clock reference count remains
>> paired with the previous active state.
>>
>> Signed-off-by: Ze Huang <ze.huang@xxxxxxxxxxxxxxxx>
>> ---
>> +
[ ... ]
>> +static void imx_lcdc_crtc_helper_atomic_flush(struct drm_crtc *crtc,
>> + struct drm_atomic_commit *commit)
>> +{
>> + struct drm_crtc_state *new_crtc_state = drm_atomic_get_new_crtc_state(commit, crtc);
>> + struct drm_pending_vblank_event *event = new_crtc_state->event;
>> +
>> + if (!event)
>> + return;
>> +
>> + new_crtc_state->event = NULL;
>> +
>> + spin_lock_irq(&crtc->dev->event_lock);
>> + if (new_crtc_state->active && drm_crtc_vblank_get(crtc) == 0)
>> + drm_crtc_arm_vblank_event(crtc, event);
>> + else
>> + drm_crtc_send_vblank_event(crtc, event);
>> + spin_unlock_irq(&crtc->dev->event_lock);
>> }
>
> Please use drm_crtc_vblank_atomic_flush(). [1]
>
> [1]
> https://elixir.bootlin.com/linux/v7.2.5/source/drivers/gpu/drm/drm_vblank_helper.c#L51
Thanks! will follow
>
> Best regards
> Thomas
>