From: Andy Yan <andy....@rock-chips.com>

The phy_id of cluster windws are not increase one for each window.

Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
Tested-by: Derek Foreman <derek.fore...@collabora.com>
Signed-off-by: Andy Yan <andy....@rock-chips.com>
---

(no changes since v1)

 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 
b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
index d1169aa8ff5e..d0b2b881ff07 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
@@ -2370,7 +2370,6 @@ static int vop2_find_start_mixer_id_for_vp(struct vop2 
*vop2, u8 port_id)
 
 static void vop2_setup_cluster_alpha(struct vop2 *vop2, struct vop2_win 
*main_win)
 {
-       u32 offset = (main_win->data->phys_id * 0x10);
        struct vop2_alpha_config alpha_config;
        struct vop2_alpha alpha;
        struct drm_plane_state *bottom_win_pstate;
@@ -2378,6 +2377,7 @@ static void vop2_setup_cluster_alpha(struct vop2 *vop2, 
struct vop2_win *main_wi
        u16 src_glb_alpha_val, dst_glb_alpha_val;
        bool premulti_en = false;
        bool swap = false;
+       u32 offset = 0;
 
        /* At one win mode, win0 is dst/bottom win, and win1 is a all zero 
src/top win */
        bottom_win_pstate = main_win->base.state;
@@ -2396,6 +2396,22 @@ static void vop2_setup_cluster_alpha(struct vop2 *vop2, 
struct vop2_win *main_wi
        vop2_parse_alpha(&alpha_config, &alpha);
 
        alpha.src_color_ctrl.bits.src_dst_swap = swap;
+
+       switch (main_win->data->phys_id) {
+       case ROCKCHIP_VOP2_CLUSTER0:
+               offset = 0x0;
+               break;
+       case ROCKCHIP_VOP2_CLUSTER1:
+               offset = 0x10;
+               break;
+       case ROCKCHIP_VOP2_CLUSTER2:
+               offset = 0x20;
+               break;
+       case ROCKCHIP_VOP2_CLUSTER3:
+               offset = 0x30;
+               break;
+       }
+
        vop2_writel(vop2, RK3568_CLUSTER0_MIX_SRC_COLOR_CTRL + offset,
                    alpha.src_color_ctrl.val);
        vop2_writel(vop2, RK3568_CLUSTER0_MIX_DST_COLOR_CTRL + offset,
-- 
2.34.1

Reply via email to