[PATCH 2/3] media: vsp1: Reset FCP for VSPD

From: Jacopo Mondi
Date: Mon Jun 09 2025 - 15:02:38 EST


From: Koji Matsuoka <koji.matsuoka.xm@xxxxxxxxxxx>

According to H/W manual v1.00, VSPD must be excecuted
FCP_RST.SOFTRST after VI6_SRESET.SRST. So this patch adds it.
VSPDL is not applicable.

Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@xxxxxxxxxxx>
Signed-off-by: LUU HOAI <hoai.luu.ub@xxxxxxxxxxx>
Signed-off-by: Jacopo Mondi <jacopo.mondi+renesas@xxxxxxxxxxxxxxxx>
---
drivers/media/platform/renesas/vsp1/vsp1_pipe.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c
index 3cbb768cf6adc8cb182d8d31c5b9a9d3565785e7..a6e5e10f3ef275c1b081c3d957e6cf356332afce 100644
--- a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c
+++ b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c
@@ -13,6 +13,7 @@
#include <linux/wait.h>

#include <media/media-entity.h>
+#include <media/rcar-fcp.h>
#include <media/v4l2-subdev.h>

#include "vsp1.h"
@@ -22,6 +23,7 @@
#include "vsp1_hgo.h"
#include "vsp1_hgt.h"
#include "vsp1_pipe.h"
+#include "vsp1_regs.h"
#include "vsp1_rwpf.h"
#include "vsp1_uds.h"

@@ -512,6 +514,11 @@ int vsp1_pipeline_stop(struct vsp1_pipeline *pipe)
pipe->state = VSP1_PIPELINE_STOPPED;
spin_unlock_irqrestore(&pipe->irqlock, flags);
}
+
+ if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) ==
+ VI6_IP_VERSION_MODEL_VSPD_GEN3)
+ ret |= rcar_fcp_soft_reset(vsp1->fcp);
+
} else {
/* Otherwise just request a stop and wait. */
spin_lock_irqsave(&pipe->irqlock, flags);

--
2.49.0