summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/ingenic
diff options
context:
space:
mode:
authorPaul Cercueil <paul@crapouillou.net>2021-10-26 21:12:38 +0300
committerPaul Cercueil <paul@crapouillou.net>2021-10-29 23:30:07 +0300
commit5410345f7acb4e84825e7e02f68480c95f3b7b15 (patch)
tree11f8fd4a178af1e9f85d734afd919713d01a5e51 /drivers/gpu/drm/ingenic
parent9361329d57129ab2e7a47e11962088dd540be47d (diff)
downloadlinux-5410345f7acb4e84825e7e02f68480c95f3b7b15.tar.xz
drm/ingenic: Set DMA descriptor chain register when starting CRTC
Setting the DMA descriptor chain register in the probe function has been fine until now, because we only ever had one descriptor per foreground. As the driver will soon have real descriptor chains, and the DMA descriptor chain register updates itself to point to the current descriptor being processed, this register needs to be reset after a full modeset to point to the first descriptor of the chain. Signed-off-by: Paul Cercueil <paul@crapouillou.net> Link: https://patchwork.freedesktop.org/patch/msgid/20211026181240.213806-5-paul@crapouillou.net Tested-by: Nikolaus Schaller <hns@goldelico.com> Reviewed-by: Christophe Branchereau <cbranchereau@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/ingenic')
-rw-r--r--drivers/gpu/drm/ingenic/ingenic-drm-drv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 5dbeca0f8f37..cbc76cede99e 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -186,6 +186,10 @@ static void ingenic_drm_crtc_atomic_enable(struct drm_crtc *crtc,
regmap_write(priv->map, JZ_REG_LCD_STATE, 0);
+ /* Set address of our DMA descriptor chain */
+ regmap_write(priv->map, JZ_REG_LCD_DA0, dma_hwdesc_addr(priv, 0));
+ regmap_write(priv->map, JZ_REG_LCD_DA1, dma_hwdesc_addr(priv, 1));
+
regmap_update_bits(priv->map, JZ_REG_LCD_CTRL,
JZ_LCD_CTRL_ENABLE | JZ_LCD_CTRL_DISABLE,
JZ_LCD_CTRL_ENABLE);