diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0680-media-i2c-ov5647-Set-V4L2_SUBDEV_FL_HAS_EVENTS-flag.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0680-media-i2c-ov5647-Set-V4L2_SUBDEV_FL_HAS_EVENTS-flag.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0680-media-i2c-ov5647-Set-V4L2_SUBDEV_FL_HAS_EVENTS-flag.patch b/target/linux/bcm27xx/patches-5.4/950-0680-media-i2c-ov5647-Set-V4L2_SUBDEV_FL_HAS_EVENTS-flag.patch deleted file mode 100644 index b7a3f19753..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0680-media-i2c-ov5647-Set-V4L2_SUBDEV_FL_HAS_EVENTS-flag.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 0e864ac98ffc97d0bb5fc343ca62d860fbe8da09 Mon Sep 17 00:00:00 2001 -From: Dave Stevenson <dave.stevenson@raspberrypi.com> -Date: Wed, 29 Apr 2020 17:25:56 +0100 -Subject: [PATCH] media: i2c: ov5647: Set V4L2_SUBDEV_FL_HAS_EVENTS - flag - -The ov5647 subdev can generate control events, therefore set -the V4L2_SUBDEV_FL_HAS_EVENTS flag. - -Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> ---- - drivers/media/i2c/ov5647.c | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) - ---- a/drivers/media/i2c/ov5647.c -+++ b/drivers/media/i2c/ov5647.c -@@ -90,6 +90,8 @@ struct ov5647_mode { - struct v4l2_rect crop; - - u64 pixel_rate; -+ /* HTS as defined in the register set (0x380C/0x380D) */ -+ int hts; - - struct regval_list *reg_list; - unsigned int num_regs; -@@ -106,6 +108,7 @@ struct ov5647 { - unsigned int flags; - struct v4l2_ctrl_handler ctrls; - struct v4l2_ctrl *pixel_rate; -+ struct v4l2_ctrl *hblank; - bool write_mode_regs; - }; - -@@ -605,6 +608,7 @@ static struct ov5647_mode supported_mode - .height = 960, - }, - .pixel_rate = 77291670, -+ .hts = 1896, - ov5647_640x480_8bit, - ARRAY_SIZE(ov5647_640x480_8bit) - }, -@@ -629,6 +633,7 @@ static struct ov5647_mode supported_mode - .height = 1944 - }, - .pixel_rate = 87500000, -+ .hts = 2844, - ov5647_2592x1944_10bit, - ARRAY_SIZE(ov5647_2592x1944_10bit) - }, -@@ -651,6 +656,7 @@ static struct ov5647_mode supported_mode - .height = 1080, - }, - .pixel_rate = 81666700, -+ .hts = 2416, - ov5647_1080p30_10bit, - ARRAY_SIZE(ov5647_1080p30_10bit) - }, -@@ -672,6 +678,7 @@ static struct ov5647_mode supported_mode - .height = 1944, - }, - .pixel_rate = 81666700, -+ .hts = 1896, - ov5647_2x2binned_10bit, - ARRAY_SIZE(ov5647_2x2binned_10bit) - }, -@@ -694,6 +701,7 @@ static struct ov5647_mode supported_mode - .height = 1920, - }, - .pixel_rate = 55000000, -+ .hts = 1852, - ov5647_640x480_10bit, - ARRAY_SIZE(ov5647_640x480_10bit) - }, -@@ -1168,6 +1176,8 @@ static int ov5647_set_fmt(struct v4l2_su - * If we have changed modes, write the I2C register list on - * a stream_on(). - */ -+ int hblank; -+ - if (state->mode != mode) - state->write_mode_regs = true; - state->mode = mode; -@@ -1176,6 +1186,9 @@ static int ov5647_set_fmt(struct v4l2_su - mode->pixel_rate, - mode->pixel_rate, 1, - mode->pixel_rate); -+ hblank = mode->hts - mode->format.width; -+ __v4l2_ctrl_modify_range(state->hblank, hblank, hblank, 1, -+ hblank); - } - - mutex_unlock(&state->lock); -@@ -1395,6 +1408,9 @@ static int ov5647_s_ctrl(struct v4l2_ctr - case V4L2_CID_PIXEL_RATE: - /* Read-only, but we adjust it based on mode. */ - break; -+ case V4L2_CID_HBLANK: -+ /* Read-only, but we adjust it based on mode. */ -+ break; - default: - dev_info(&client->dev, - "ctrl(id:0x%x,val:0x%x) is not handled\n", -@@ -1419,6 +1435,7 @@ static int ov5647_probe(struct i2c_clien - struct device_node *np = client->dev.of_node; - u32 xclk_freq; - struct v4l2_ctrl *ctrl; -+ int hblank; - - sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL); - if (!sensor) -@@ -1452,7 +1469,7 @@ static int ov5647_probe(struct i2c_clien - mutex_init(&sensor->lock); - - /* Initialise controls. */ -- v4l2_ctrl_handler_init(&sensor->ctrls, 6); -+ v4l2_ctrl_handler_init(&sensor->ctrls, 7); - v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, - V4L2_CID_AUTOGAIN, - 0, /* min */ -@@ -1495,6 +1512,13 @@ static int ov5647_probe(struct i2c_clien - sensor->mode->pixel_rate, 1, - sensor->mode->pixel_rate); - -+ /* By default, HBLANK is read only, but it does change per mode */ -+ hblank = sensor->mode->hts - sensor->mode->format.width; -+ sensor->hblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, -+ V4L2_CID_HBLANK, hblank, hblank, 1, -+ hblank); -+ sensor->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; -+ - if (sensor->ctrls.error) { - ret = sensor->ctrls.error; - dev_err(&client->dev, "%s control init failed (%d)\n", -@@ -1509,7 +1533,8 @@ static int ov5647_probe(struct i2c_clien - sd = &sensor->sd; - v4l2_i2c_subdev_init(sd, client, &ov5647_subdev_ops); - sensor->sd.internal_ops = &ov5647_subdev_internal_ops; -- sensor->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; -+ sensor->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | -+ V4L2_SUBDEV_FL_HAS_EVENTS; - - sensor->pad.flags = MEDIA_PAD_FL_SOURCE; - sd->entity.function = MEDIA_ENT_F_CAM_SENSOR; |