[PATCH v2 5/6] drm: lcdif: move pitch setup to plane atomic update
Lucas Stach
l.stach at pengutronix.de
Thu Sep 21 13:03:11 PDT 2023
The buffer pitch may change when switching the buffer on a
atomic update. As the register is double buffered it can be
safely changed while the display is active.
Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Marek Vasut <marex at denx.de>
---
v2: no changes
---
drivers/gpu/drm/mxsfb/lcdif_kms.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c b/drivers/gpu/drm/mxsfb/lcdif_kms.c
index 4e9284b0d12e..daf54ff2b7bd 100644
--- a/drivers/gpu/drm/mxsfb/lcdif_kms.c
+++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c
@@ -327,19 +327,6 @@ static void lcdif_set_mode(struct lcdif_drm_private *lcdif, u32 bus_flags)
writel(CTRLDESCL0_1_HEIGHT(m->vdisplay) |
CTRLDESCL0_1_WIDTH(m->hdisplay),
lcdif->base + LCDC_V8_CTRLDESCL0_1);
-
- /*
- * The P_SIZE and T_SIZE bitfields are only documented in the
- * downstream driver. Those bitfields control the AXI burst size.
- * As of now there are two known values:
- * 1 - 128Byte
- * 2 - 256Byte
- * Downstream sets this to 256B burst size to improve the memory access
- * efficiency so set it here too.
- */
- ctrl = CTRLDESCL0_3_P_SIZE(2) | CTRLDESCL0_3_T_SIZE(2) |
- CTRLDESCL0_3_PITCH(lcdif->crtc.primary->state->fb->pitches[0]);
- writel(ctrl, lcdif->base + LCDC_V8_CTRLDESCL0_3);
}
static void lcdif_enable_controller(struct lcdif_drm_private *lcdif)
@@ -694,6 +681,19 @@ static void lcdif_plane_primary_atomic_update(struct drm_plane *plane,
writel(CTRLDESCL_HIGH0_4_ADDR_HIGH(upper_32_bits(paddr)),
lcdif->base + LCDC_V8_CTRLDESCL_HIGH0_4);
}
+
+ /*
+ * The P_SIZE and T_SIZE bitfields are only documented in the
+ * downstream driver. Those bitfields control the AXI burst size.
+ * As of now there are two known values:
+ * 1 - 128Byte
+ * 2 - 256Byte
+ * Downstream sets this to 256B burst size to improve the memory access
+ * efficiency so set it here too.
+ */
+ writel(CTRLDESCL0_3_P_SIZE(2) | CTRLDESCL0_3_T_SIZE(2) |
+ CTRLDESCL0_3_PITCH(new_pstate->fb->pitches[0]),
+ lcdif->base + LCDC_V8_CTRLDESCL0_3);
}
static bool lcdif_format_mod_supported(struct drm_plane *plane,
--
2.39.2
More information about the linux-arm-kernel
mailing list