Re: [PATCH 2/5] drm: lcdif: move controller enable into atomic_flush

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/20/23 12:31, Lucas Stach wrote:
Allow drm_atomic_helper_commit_tail_rpm to setup all the plane
state before the scanout is started.

Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
---
  drivers/gpu/drm/mxsfb/lcdif_kms.c | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c b/drivers/gpu/drm/mxsfb/lcdif_kms.c
index f5bfe8b52920..4acf6914a8d1 100644
--- a/drivers/gpu/drm/mxsfb/lcdif_kms.c
+++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c
@@ -505,6 +505,8 @@ static int lcdif_crtc_atomic_check(struct drm_crtc *crtc,
  static void lcdif_crtc_atomic_flush(struct drm_crtc *crtc,
  				    struct drm_atomic_state *state)
  {
+	struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
+									  crtc);
  	struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev);
  	struct drm_pending_vblank_event *event;
  	u32 reg;
@@ -513,6 +515,9 @@ static void lcdif_crtc_atomic_flush(struct drm_crtc *crtc,
  	reg |= CTRLDESCL0_5_SHADOW_LOAD_EN;
  	writel(reg, lcdif->base + LCDC_V8_CTRLDESCL0_5);
+ if (drm_atomic_crtc_needs_modeset(crtc_state))
+		lcdif_enable_controller(lcdif);
+
  	event = crtc->state->event;
  	crtc->state->event = NULL;
@@ -552,7 +557,6 @@ static void lcdif_crtc_atomic_enable(struct drm_crtc *crtc,
  		writel(CTRLDESCL_HIGH0_4_ADDR_HIGH(upper_32_bits(paddr)),
  		       lcdif->base + LCDC_V8_CTRLDESCL_HIGH0_4);
  	}
-	lcdif_enable_controller(lcdif);
drm_crtc_vblank_on(crtc);
  }

Reviewed-by: Marek Vasut <marex@xxxxxxx>



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux