X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fchunkeey.git;a=blobdiff_plain;f=target%2Flinux%2Fbcm27xx%2Fpatches-5.10%2F950-0225-media-ov5647-Fix-return-codes-from-ov5647_write-ov56.patch;fp=target%2Flinux%2Fbcm27xx%2Fpatches-5.10%2F950-0225-media-ov5647-Fix-return-codes-from-ov5647_write-ov56.patch;h=0000000000000000000000000000000000000000;hp=19f24a33a695283ba4b93666d79799b1b652bda2;hb=d5c4f24b2af991df2ec24df1a3f906049370f59f;hpb=99ad84b6d9727a63f99a16e0b8386747262e3433 diff --git a/target/linux/bcm27xx/patches-5.10/950-0225-media-ov5647-Fix-return-codes-from-ov5647_write-ov56.patch b/target/linux/bcm27xx/patches-5.10/950-0225-media-ov5647-Fix-return-codes-from-ov5647_write-ov56.patch deleted file mode 100644 index 19f24a33a6..0000000000 --- a/target/linux/bcm27xx/patches-5.10/950-0225-media-ov5647-Fix-return-codes-from-ov5647_write-ov56.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 0a17f217911f989cd58df868f902b488088a1398 Mon Sep 17 00:00:00 2001 -From: David Plowman -Date: Wed, 15 Jan 2020 13:40:38 +0000 -Subject: [PATCH] media: ov5647: Fix return codes from - ov5647_write/ov5647_read functions. - -Previously they were returning positive non-zero codes for success, -which were getting passed up the call stack. Since release 4.19, -do_dentry_open (fs/open.c) has been catching these and flagging an -error. (So this driver has been broken since that date.) - -Fixes: 3c2472a [media] media: i2c: Add support for OV5647 sensor -Signed-off-by: David Plowman -Signed-off-by: Naushir Patuck ---- - drivers/media/i2c/ov5647.c | 30 +++++++++++++++++++++++++++--- - 1 file changed, 27 insertions(+), 3 deletions(-) - ---- a/drivers/media/i2c/ov5647.c -+++ b/drivers/media/i2c/ov5647.c -@@ -214,9 +214,18 @@ static int ov5647_write(struct v4l2_subd - struct i2c_client *client = v4l2_get_subdevdata(sd); - - ret = i2c_master_send(client, data, 3); -- if (ret < 0) -+ /* -+ * Writing the wrong number of bytes also needs to be flagged as an -+ * error. Success needs to produce a 0 return code. -+ */ -+ if (ret == 3) { -+ ret = 0; -+ } else { - dev_dbg(&client->dev, "%s: i2c write error, reg: %x\n", - __func__, reg); -+ if (ret >= 0) -+ ret = -EINVAL; -+ } - - return ret; - } -@@ -228,16 +237,31 @@ static int ov5647_read(struct v4l2_subde - struct i2c_client *client = v4l2_get_subdevdata(sd); - - ret = i2c_master_send(client, data_w, 2); -- if (ret < 0) { -+ /* -+ * A negative return code, or sending the wrong number of bytes, both -+ * count as an error. -+ */ -+ if (ret != 2) { - dev_dbg(&client->dev, "%s: i2c write error, reg: %x\n", - __func__, reg); -+ if (ret >= 0) -+ ret = -EINVAL; - return ret; - } - - ret = i2c_master_recv(client, val, 1); -- if (ret < 0) -+ /* -+ * The only return value indicating success is 1. Anything else, even -+ * a non-negative value, indicates something went wrong. -+ */ -+ if (ret == 1) { -+ ret = 0; -+ } else { - dev_dbg(&client->dev, "%s: i2c read error, reg: %x\n", - __func__, reg); -+ if (ret >= 0) -+ ret = -EINVAL; -+ } - - return ret; - }