[PATCH 08/16] media: rkisp1: Switch to calling .enable/disable_streams() in CSI subdev

Daniel Scally dan.scally at ideasonboard.com
Mon Nov 2 23:40:44 PST 2026


Switch to calling .enable_streams() and .disable_streams() for the
downstream subdevice in the rkisp1 csi subdevice's .s_stream()
operation.

Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
---
 .../media/platform/rockchip/rkisp1/rkisp1-common.h |  2 +-
 .../media/platform/rockchip/rkisp1/rkisp1-csi.c    | 24 +++++++++++-----------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
index 6a017a2077f6fdef3a3fd0998f182baa19bfc5b6..357a6bd8db7da4c881e4cba5b5f54e40fd21c38c 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
@@ -209,7 +209,7 @@ struct rkisp1_csi {
 	bool is_dphy_errctrl_disabled;
 	struct v4l2_subdev sd;
 	struct media_pad pads[RKISP1_CSI_PAD_NUM];
-	struct v4l2_subdev *source;
+	struct media_pad *source;
 };
 
 /*
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
index 9fa8a0407c90ec5e379a78da32315a0abf406ea4..1fd122f95f8ad0d6c34384ef647da0a3a57c811b 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-csi.c
@@ -355,32 +355,34 @@ static int rkisp1_csi_s_stream(struct v4l2_subdev *sd, int enable)
 	struct rkisp1_sensor_async *source_asd;
 	struct v4l2_async_connection *asc;
 	struct v4l2_subdev_state *sd_state;
-	struct media_pad *source_pad;
-	struct v4l2_subdev *source;
+	struct v4l2_subdev *source_sd;
 	int ret;
 
 	if (!enable) {
-		v4l2_subdev_call(csi->source, video, s_stream, false);
+		source_sd = media_entity_to_v4l2_subdev(csi->source->entity);
+		if (!source_sd)
+			return -EPIPE;
 
+		v4l2_subdev_disable_streams(source_sd, csi->source->index, BIT(0));
 		rkisp1_csi_stop(csi);
 
 		return 0;
 	}
 
-	source_pad = media_entity_remote_source_pad_unique(&sd->entity);
-	if (IS_ERR(source_pad)) {
+	csi->source = media_entity_remote_source_pad_unique(&sd->entity);
+	if (IS_ERR(csi->source)) {
 		dev_dbg(rkisp1->dev, "Failed to get source for CSI: %pe\n",
-			source_pad);
+			csi->source);
 		return -EPIPE;
 	}
 
-	source = media_entity_to_v4l2_subdev(source_pad->entity);
-	if (!source) {
+	source_sd = media_entity_to_v4l2_subdev(csi->source->entity);
+	if (!source_sd) {
 		/* This should really not happen, so is not worth a message. */
 		return -EPIPE;
 	}
 
-	asc = v4l2_async_connection_unique(source);
+	asc = v4l2_async_connection_unique(source_sd);
 	if (!asc)
 		return -EPIPE;
 
@@ -397,14 +399,12 @@ static int rkisp1_csi_s_stream(struct v4l2_subdev *sd, int enable)
 	if (ret)
 		return ret;
 
-	ret = v4l2_subdev_call(source, video, s_stream, true);
+	ret = v4l2_subdev_enable_streams(source_sd, csi->source->index, BIT(0));
 	if (ret) {
 		rkisp1_csi_stop(csi);
 		return ret;
 	}
 
-	csi->source = source;
-
 	return 0;
 }
 

-- 
2.43.0




More information about the linux-arm-kernel mailing list