Remove color_mgmt_changed check from vop2_crtc_atomic_try_set_gamma to
allow gamma LUT rewrite during modeset when coming out of suspend. Add
a check for color_mgmt_changed directly in vop2_crtc_atomic_flush.

This patch fixes the patch adding gamma LUT support for vop2 [1].

[1] 
https://lore.kernel.org/linux-rockchip/20241101185545.559090-3-pz010001011...@proton.me/

Suggested-by: Andy Yan <andy....@rock-chips.com>
Signed-off-by: Piotr Zalewski <pz010001011...@proton.me>
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 
b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
index 0c8ec7220fbe..d259f1c6571d 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
@@ -1601,7 +1601,7 @@ static void vop2_crtc_atomic_try_set_gamma(struct vop2 
*vop2,
                                           struct drm_crtc *crtc,
                                           struct drm_crtc_state *crtc_state)
 {
-       if (!vop2->lut_regs || !crtc_state->color_mgmt_changed)
+       if (!vop2->lut_regs)
                return;
 
        if (!crtc_state->gamma_lut) {
@@ -2669,7 +2669,7 @@ static void vop2_crtc_atomic_flush(struct drm_crtc *crtc,
        struct vop2 *vop2 = vp->vop2;
 
        /* In case of modeset, gamma lut update already happened in atomic 
enable */
-       if (!drm_atomic_crtc_needs_modeset(crtc_state))
+       if (!drm_atomic_crtc_needs_modeset(crtc_state) && 
crtc_state->color_mgmt_changed)
                vop2_crtc_atomic_try_set_gamma_locked(vop2, vp, crtc, 
crtc_state);
 
        vop2_post_config(crtc);
-- 
2.47.1


Reply via email to