[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