[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