The VSP-DL instances have two LIFs, and thus two copies of the
VI6_DISP_IRQ_ENB, VI6_DISP_IRQ_STA and VI6_WPF_WRBCK_CTRL registers. Fix
the corresponding macros accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart+rene...@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham+rene...@ideasonboard.com>
---
 drivers/media/platform/vsp1/vsp1_drm.c  | 4 ++--
 drivers/media/platform/vsp1/vsp1_regs.h | 6 +++---
 drivers/media/platform/vsp1/vsp1_wpf.c  | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/vsp1/vsp1_drm.c 
b/drivers/media/platform/vsp1/vsp1_drm.c
index 8d86f618ec77..048190fd3a2d 100644
--- a/drivers/media/platform/vsp1/vsp1_drm.c
+++ b/drivers/media/platform/vsp1/vsp1_drm.c
@@ -700,8 +700,8 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int 
pipe_index,
        drm_pipe->du_private = cfg->callback_data;
 
        /* Disable the display interrupts. */
-       vsp1_write(vsp1, VI6_DISP_IRQ_STA, 0);
-       vsp1_write(vsp1, VI6_DISP_IRQ_ENB, 0);
+       vsp1_write(vsp1, VI6_DISP_IRQ_STA(pipe_index), 0);
+       vsp1_write(vsp1, VI6_DISP_IRQ_ENB(pipe_index), 0);
 
        /* Configure all entities in the pipeline. */
        vsp1_du_pipeline_configure(pipe);
diff --git a/drivers/media/platform/vsp1/vsp1_regs.h 
b/drivers/media/platform/vsp1/vsp1_regs.h
index f6e4157095cc..1bb1d39c60d9 100644
--- a/drivers/media/platform/vsp1/vsp1_regs.h
+++ b/drivers/media/platform/vsp1/vsp1_regs.h
@@ -39,12 +39,12 @@
 #define VI6_WFP_IRQ_STA_DFE            (1 << 1)
 #define VI6_WFP_IRQ_STA_FRE            (1 << 0)
 
-#define VI6_DISP_IRQ_ENB               0x0078
+#define VI6_DISP_IRQ_ENB(n)            (0x0078 + (n) * 60)
 #define VI6_DISP_IRQ_ENB_DSTE          (1 << 8)
 #define VI6_DISP_IRQ_ENB_MAEE          (1 << 5)
 #define VI6_DISP_IRQ_ENB_LNEE(n)       (1 << (n))
 
-#define VI6_DISP_IRQ_STA               0x007c
+#define VI6_DISP_IRQ_STA(n)            (0x007c + (n) * 60)
 #define VI6_DISP_IRQ_STA_DST           (1 << 8)
 #define VI6_DISP_IRQ_STA_MAE           (1 << 5)
 #define VI6_DISP_IRQ_STA_LNE(n)                (1 << (n))
@@ -307,7 +307,7 @@
 #define VI6_WPF_DSTM_ADDR_C0           0x1028
 #define VI6_WPF_DSTM_ADDR_C1           0x102c
 
-#define VI6_WPF_WRBCK_CTRL             0x1034
+#define VI6_WPF_WRBCK_CTRL(n)          (0x1034 + (n) * 0x100)
 #define VI6_WPF_WRBCK_CTRL_WBMD                (1 << 0)
 
 /* 
-----------------------------------------------------------------------------
diff --git a/drivers/media/platform/vsp1/vsp1_wpf.c 
b/drivers/media/platform/vsp1/vsp1_wpf.c
index a07c5944b598..18c49e3a7875 100644
--- a/drivers/media/platform/vsp1/vsp1_wpf.c
+++ b/drivers/media/platform/vsp1/vsp1_wpf.c
@@ -291,7 +291,7 @@ static void wpf_configure_stream(struct vsp1_entity *entity,
        vsp1_dl_body_write(dlb, VI6_DPR_WPF_FPORCH(wpf->entity.index),
                           VI6_DPR_WPF_FPORCH_FP_WPFN);
 
-       vsp1_dl_body_write(dlb, VI6_WPF_WRBCK_CTRL, 0);
+       vsp1_dl_body_write(dlb, VI6_WPF_WRBCK_CTRL(wpf->entity.index), 0);
 
        /*
         * Sources. If the pipeline has a single input and BRx is not used,
-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to