Hi Laurent, On 17/02/2019 02:48, Laurent Pinchart wrote: > 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. > Seep. This could have ended badly if someone used both LIF's :) (which I'm sure happens) > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@xxxxxxxxxxxxxxxx> > --- > 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 -- Kieran