]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/ingenic: Set DMA descriptor chain register when starting CRTC
authorPaul Cercueil <paul@crapouillou.net>
Tue, 26 Oct 2021 18:12:38 +0000 (19:12 +0100)
committerPaul Cercueil <paul@crapouillou.net>
Fri, 29 Oct 2021 20:30:07 +0000 (21:30 +0100)
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>
drivers/gpu/drm/ingenic/ingenic-drm-drv.c

index 5dbeca0f8f37f4878e099712ceaf5fa071f468a9..cbc76cede99e4266af0adbf96d440984631d7c73 100644 (file)
@@ -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);