From e2cb0f408f1a2524cfdecd6180a5106812c07577 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Fri, 1 Jul 2022 19:00:44 +0800 Subject: [PATCH] media: i2c: sensor adapter support set frame_interval Signed-off-by: Zefa Chen Change-Id: I4273a898c35b52ee16cd7132b08c5eb49bde106b --- drivers/media/i2c/sensor_adapter.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/sensor_adapter.c b/drivers/media/i2c/sensor_adapter.c index 954b9b31a9e3..d1683d2a0728 100644 --- a/drivers/media/i2c/sensor_adapter.c +++ b/drivers/media/i2c/sensor_adapter.c @@ -265,6 +265,19 @@ static int sensor_g_frame_interval(struct v4l2_subdev *sd, return 0; } +static int sensor_s_frame_interval(struct v4l2_subdev *sd, + struct v4l2_subdev_frame_interval *fi) +{ + struct sensor *sensor = to_sensor(sd); + struct sensor_mode *mode = sensor->cur_mode; + + mutex_lock(&sensor->mutex); + mode->max_fps = fi->interval; + mutex_unlock(&sensor->mutex); + + return 0; +} + static int sensor_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id, struct v4l2_mbus_config *config) { @@ -534,11 +547,11 @@ static long sensor_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) case RKMODULE_SET_REGISTER: reg_s = (struct rkmodule_reg *)arg; if (reg_s->num_regs == 0) { - dev_err(&sensor->client->dev, "sensor reg array num %d\n", reg_s->num_regs); + dev_err(&sensor->client->dev, "sensor reg array num %llu\n", reg_s->num_regs); return -EINVAL; } - dev_dbg(&sensor->client->dev, "sensor reg array num %d\n", + dev_dbg(&sensor->client->dev, "sensor reg array num %llu\n", reg_s->num_regs); lens = sizeof(u32) * reg_s->num_regs; preg_addr = kzalloc(lens, GFP_KERNEL); @@ -1141,6 +1154,7 @@ static const struct v4l2_subdev_core_ops sensor_core_ops = { static const struct v4l2_subdev_video_ops sensor_video_ops = { .s_stream = sensor_s_stream, .g_frame_interval = sensor_g_frame_interval, + .s_frame_interval = sensor_s_frame_interval, }; static const struct v4l2_subdev_pad_ops sensor_pad_ops = {