bcm27xx: update patches from RPi foundation
[openwrt/staging/luka.git] / target / linux / bcm27xx / patches-5.4 / 950-0691-media-i2c-ov5647-Neither-analogue-gain-nor-exposure-.patch
diff --git a/target/linux/bcm27xx/patches-5.4/950-0691-media-i2c-ov5647-Neither-analogue-gain-nor-exposure-.patch b/target/linux/bcm27xx/patches-5.4/950-0691-media-i2c-ov5647-Neither-analogue-gain-nor-exposure-.patch
new file mode 100644 (file)
index 0000000..039809e
--- /dev/null
@@ -0,0 +1,58 @@
+From ea0b801a818e837e657c53687f03d62805e2e586 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Wed, 29 Apr 2020 21:47:25 +0100
+Subject: [PATCH] media: i2c: ov5647: Neither analogue gain nor
+ exposure need EXECUTE_ON_WRITE
+
+The controls for analogue gain and exposure were defined with
+V4L2_CTRL_FLAG_EXECUTE_ON_WRITE. This is not required as we only need
+to send changes to the sensor.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ drivers/media/i2c/ov5647.c | 27 ++++++++++++---------------
+ 1 file changed, 12 insertions(+), 15 deletions(-)
+
+--- a/drivers/media/i2c/ov5647.c
++++ b/drivers/media/i2c/ov5647.c
+@@ -1472,7 +1472,6 @@ static int ov5647_probe(struct i2c_clien
+       struct v4l2_subdev *sd;
+       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);
+@@ -1525,20 +1524,18 @@ static int ov5647_probe(struct i2c_clien
+                              V4L2_EXPOSURE_MANUAL,  /* max */
+                              0,                     /* skip_mask */
+                              V4L2_EXPOSURE_MANUAL); /* default */
+-      ctrl = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
+-                               V4L2_CID_EXPOSURE,
+-                               4,     /* min lines */
+-                               65535, /* max lines (4+8+4 bits)*/
+-                               1,     /* step */
+-                               1000); /* default number of lines */
+-      ctrl->flags |= V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
+-      ctrl = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
+-                               V4L2_CID_ANALOGUE_GAIN,
+-                               16,   /* min, 16 = 1.0x */
+-                               1023, /* max (10 bits) */
+-                               1,    /* step */
+-                               32);  /* default, 32 = 2.0x */
+-      ctrl->flags |= V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
++      v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
++                        V4L2_CID_EXPOSURE,
++                        4,     /* min lines */
++                        65535, /* max lines (4+8+4 bits)*/
++                        1,     /* step */
++                        1000); /* default number of lines */
++      v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
++                        V4L2_CID_ANALOGUE_GAIN,
++                        16,   /* min, 16 = 1.0x */
++                        1023, /* max (10 bits) */
++                        1,    /* step */
++                        32);  /* default, 32 = 2.0x */
+       /* Set the default mode before we init the subdev */
+       sensor->mode = OV5647_DEFAULT_MODE;