summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/renesas
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert+renesas@glider.be>2023-09-15 11:53:19 +0300
committerGeert Uytterhoeven <geert+renesas@glider.be>2023-10-16 12:47:43 +0300
commit28675d45a3810c7302979b9803b18814d357c650 (patch)
treee38996c4777514b5ede8a92da7722ce4376cda5e /drivers/gpu/drm/renesas
parentc68ab8b5ea53aa0895f7ec5b72c87e0f7097761e (diff)
downloadlinux-28675d45a3810c7302979b9803b18814d357c650.tar.xz
drm: renesas: shmobile: Fix overlay plane disable
Merely writing zero to the CHn Source Image Format Register is not sufficient to disable a plane, as the programmed register value is not propagated immediately to the current side. This can be seen when using the -P option of modetest: the extra plane is displayed correctly, but does not disappear after exit. Fix this by doing the full update dance using the Blend Control Register, like is done when enabling the plane. Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/r/54e2556e18b5524ce153a7ac79faf2c7b0a55260.1694767209.git.geert+renesas@glider.be
Diffstat (limited to 'drivers/gpu/drm/renesas')
-rw-r--r--drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c
index 850986cee848..0e34573c3cb3 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c
@@ -215,7 +215,10 @@ static int shmob_drm_plane_disable(struct drm_plane *plane,
splane->format = NULL;
+ lcdc_write(sdev, LDBCR, LDBCR_UPC(splane->index));
lcdc_write(sdev, LDBnBSIFR(splane->index), 0);
+ lcdc_write(sdev, LDBCR,
+ LDBCR_UPF(splane->index) | LDBCR_UPD(splane->index));
return 0;
}