Hi Sascha, Am Montag, 17. April 2023, 11:42:15 CEST schrieb Sascha Hauer: > During a suspend/resume cycle the VO power domain will be disabled and > the VOP2 registers will reset to their default values. After that the > cached register values will be out of sync and the read/modify/write > operations we do on the window registers will result in bogus values > written. Fix this by marking the regcache as dirty each time we disable > the VOP2 and call regcache_sync() each time we enable it again. With > this the VOP2 will show a picture after a suspend/resume cycle whereas > without this the screen stays dark. > > Fixes: 604be85547ce4 ("drm/rockchip: Add VOP2 driver") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> somehow we overlapped with this v2 and me applying the original one [0] to drm-misc. With drm-misc being a shared tree there is also no way back. So if this v2 is better suited, could do a follow-up patch instead - on top of your original one? Thanks Heiko [0] https://cgit.freedesktop.org/drm/drm-misc/commit/?h=drm-misc-fixes&id=afa965a45e01e541cdbe5c8018226eff117610f0 > --- > > Changes since v1: > - Use regcache_mark_dirty()/regcache_sync() instead of regmap_reinit_cache() > > drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > index ba3b817895091..293c228a83f90 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > @@ -839,6 +839,8 @@ static void vop2_enable(struct vop2 *vop2) > return; > } > > + regcache_sync(vop2->map); > + > if (vop2->data->soc_id == 3566) > vop2_writel(vop2, RK3568_OTP_WIN_EN, 1); > > @@ -867,6 +869,8 @@ static void vop2_disable(struct vop2 *vop2) > > pm_runtime_put_sync(vop2->dev); > > + regcache_mark_dirty(vop2->map); > + > clk_disable_unprepare(vop2->aclk); > clk_disable_unprepare(vop2->hclk); > } >