struct vop2_win win[];
 };
 
+static const struct regmap_config vop2_regmap_config;
+
 static struct vop2_video_port *to_vop2_video_port(struct drm_crtc *crtc)
 {
        return container_of(crtc, struct vop2_video_port, crtc);
                return;
        }
 
-       regcache_sync(vop2->map);
+       ret = regmap_reinit_cache(vop2->map, &vop2_regmap_config);
+       if (ret) {
+               drm_err(vop2->drm, "failed to reinit cache: %d\n", ret);
+               return;
+       }
 
        if (vop2->data->soc_id == 3566)
                vop2_writel(vop2, RK3568_OTP_WIN_EN, 1);
 
        pm_runtime_put_sync(vop2->dev);
 
-       regcache_mark_dirty(vop2->map);
-
        clk_disable_unprepare(vop2->aclk);
        clk_disable_unprepare(vop2->hclk);
 }