On Tue Apr 1 16:22:02 2025 +0200, Jacopo Mondi wrote: > The vsp1_dl library allows to program a display list and feed it > continuously to the VSP2. As an alternative operation mode, the library > allows to program the VSP2 in 'single shot' mode, where a display list > is submitted to the VSP on request only. > > Currently the 'single shot' mode is only available when the VSP2 is > controlled by userspace, while it works in continuous mode when driven > by DRM, as frames have to be submitted to the display continuously. > > For the VSPX use case, where there is no uapi support, we should however > work in single-shot mode as the ISP driver programs the VSPX on > request. > > Initialize the display lists in single shot mode in case the VSP1 is > controlled by userspace or in case the pipeline features an IIF entity, > as in the VSPX case. > > Reviewed-by: Laurent Pinchart <laurent.pinchart+rene...@ideasonboard.com> > Reviewed-by: Niklas Söderlund <niklas.soderlund+rene...@ragnatech.se> > Tested-by: Niklas Söderlund <niklas.soderlund+rene...@ragnatech.se> > Signed-off-by: Jacopo Mondi <jacopo.mondi+rene...@ideasonboard.com> > Link: > https://lore.kernel.org/r/20250401-v4h-iif-v7-2-cc547c0bd...@ideasonboard.com > Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com> > Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>
Patch committed. Thanks, Hans Verkuil drivers/media/platform/renesas/vsp1/vsp1_dl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- diff --git a/drivers/media/platform/renesas/vsp1/vsp1_dl.c b/drivers/media/platform/renesas/vsp1/vsp1_dl.c index ad3fa1c9cc73..bb8228b19824 100644 --- a/drivers/media/platform/renesas/vsp1/vsp1_dl.c +++ b/drivers/media/platform/renesas/vsp1/vsp1_dl.c @@ -1099,7 +1099,12 @@ struct vsp1_dl_manager *vsp1_dlm_create(struct vsp1_device *vsp1, return NULL; dlm->index = index; - dlm->singleshot = vsp1->info->uapi; + /* + * uapi = single shot mode; + * DRM = continuous mode; + * VSPX = single shot mode; + */ + dlm->singleshot = vsp1->info->uapi || vsp1->iif; dlm->vsp1 = vsp1; spin_lock_init(&dlm->lock);