[PATCH 11/16] media: rkisp1: Switch resizer subdevice to .enable/disable_streams()

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


The rkisp1 driver's resizer subdevices currently use the legacy
.s_stream() operation. Switch to the newer .enable_streams() and
.disable_streams().

Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
---
 .../platform/rockchip/rkisp1/rkisp1-resizer.c      | 62 +++++++++++-----------
 1 file changed, 32 insertions(+), 30 deletions(-)

diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
index 5926917434af441f718b46388860139600af0fe2..ce0b2c68cf826992ed07c453a611a7cab7dfb96a 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
@@ -615,20 +615,9 @@ static const struct media_entity_operations rkisp1_rsz_media_ops = {
 	.link_validate = v4l2_subdev_link_validate,
 };
 
-static const struct v4l2_subdev_pad_ops rkisp1_rsz_pad_ops = {
-	.enum_mbus_code = rkisp1_rsz_enum_mbus_code,
-	.get_selection = rkisp1_rsz_get_selection,
-	.set_selection = rkisp1_rsz_set_selection,
-	.get_fmt = v4l2_subdev_get_fmt,
-	.set_fmt = rkisp1_rsz_set_fmt,
-	.link_validate = v4l2_subdev_link_validate_default,
-};
-
-/* ----------------------------------------------------------------------------
- * Stream operations
- */
-
-static int rkisp1_rsz_s_stream(struct v4l2_subdev *sd, int enable)
+static int rkisp1_rsz_enable_streams(struct v4l2_subdev *sd,
+				     struct v4l2_subdev_state *state, u32 pad,
+				     u64 streams_mask)
 {
 	struct rkisp1_resizer *rsz =
 		container_of(sd, struct rkisp1_resizer, sd);
@@ -636,35 +625,48 @@ static int rkisp1_rsz_s_stream(struct v4l2_subdev *sd, int enable)
 	struct rkisp1_capture *other = &rkisp1->capture_devs[rsz->id ^ 1];
 	enum rkisp1_shadow_regs_when when = RKISP1_SHADOW_REGS_SYNC;
 	bool has_self_path = rkisp1_has_feature(rkisp1, SELF_PATH);
-	struct v4l2_subdev_state *sd_state;
-
-	if (!enable) {
-		if (rkisp1_has_feature(rkisp1, DUAL_CROP))
-			rkisp1_dcrop_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
-		rkisp1_rsz_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
-		return 0;
-	}
 
 	if (has_self_path && other->is_streaming)
 		when = RKISP1_SHADOW_REGS_ASYNC;
 
-	sd_state = v4l2_subdev_lock_and_get_active_state(sd);
-
-	rkisp1_rsz_config(rsz, sd_state, when);
+	rkisp1_rsz_config(rsz, state, when);
 	if (rkisp1_has_feature(rkisp1, DUAL_CROP))
-		rkisp1_dcrop_config(rsz, sd_state);
+		rkisp1_dcrop_config(rsz, state);
 
-	v4l2_subdev_unlock_state(sd_state);
+	return 0;
+}
+
+static int rkisp1_rsz_disable_streams(struct v4l2_subdev *sd,
+				      struct v4l2_subdev_state *state, u32 pad,
+				      u64 streams_mask)
+{
+	struct rkisp1_resizer *rsz =
+		container_of(sd, struct rkisp1_resizer, sd);
+	struct rkisp1_device *rkisp1 = rsz->rkisp1;
+
+	if (rkisp1_has_feature(rkisp1, DUAL_CROP))
+		rkisp1_dcrop_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
+	rkisp1_rsz_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
 
 	return 0;
 }
 
-static const struct v4l2_subdev_video_ops rkisp1_rsz_video_ops = {
-	.s_stream = rkisp1_rsz_s_stream,
+static const struct v4l2_subdev_pad_ops rkisp1_rsz_pad_ops = {
+	.enum_mbus_code = rkisp1_rsz_enum_mbus_code,
+	.get_selection = rkisp1_rsz_get_selection,
+	.set_selection = rkisp1_rsz_set_selection,
+	.get_fmt = v4l2_subdev_get_fmt,
+	.set_fmt = rkisp1_rsz_set_fmt,
+	.link_validate = v4l2_subdev_link_validate_default,
+	.enable_streams = rkisp1_rsz_enable_streams,
+	.disable_streams = rkisp1_rsz_disable_streams,
 };
 
+/* ----------------------------------------------------------------------------
+ * Stream operations
+ */
+
 static const struct v4l2_subdev_ops rkisp1_rsz_ops = {
-	.video = &rkisp1_rsz_video_ops,
 	.pad = &rkisp1_rsz_pad_ops,
 };
 

-- 
2.43.0




More information about the linux-arm-kernel mailing list