]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.14
authorSasha Levin <sashal@kernel.org>
Tue, 9 Jun 2020 12:03:27 +0000 (08:03 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 9 Jun 2020 12:03:27 +0000 (08:03 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.14/iio-vcnl4000-fix-i2c-swapped-word-reading.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/iio-vcnl4000-fix-i2c-swapped-word-reading.patch b/queue-4.14/iio-vcnl4000-fix-i2c-swapped-word-reading.patch
new file mode 100644 (file)
index 0000000..bbb78a6
--- /dev/null
@@ -0,0 +1,56 @@
+From 08d2f5df7061ab22b32182909fdb69aee61c465f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 3 May 2020 11:29:55 +0200
+Subject: iio: vcnl4000: Fix i2c swapped word reading.
+
+From: Mathieu Othacehe <m.othacehe@gmail.com>
+
+[ Upstream commit 18dfb5326370991c81a6d1ed6d1aeee055cb8c05 ]
+
+The bytes returned by the i2c reading need to be swapped
+unconditionally. Otherwise, on be16 platforms, an incorrect value will be
+returned.
+
+Taking the slow path via next merge window as its been around a while
+and we have a patch set dependent on this which would be held up.
+
+Fixes: 62a1efb9f868 ("iio: add vcnl4000 combined ALS and proximity sensor")
+Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/iio/light/vcnl4000.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c
+index 360b6e98137a..5a3a532937ba 100644
+--- a/drivers/iio/light/vcnl4000.c
++++ b/drivers/iio/light/vcnl4000.c
+@@ -61,7 +61,6 @@ static int vcnl4000_measure(struct vcnl4000_data *data, u8 req_mask,
+                               u8 rdy_mask, u8 data_reg, int *val)
+ {
+       int tries = 20;
+-      __be16 buf;
+       int ret;
+       mutex_lock(&data->lock);
+@@ -88,13 +87,12 @@ static int vcnl4000_measure(struct vcnl4000_data *data, u8 req_mask,
+               goto fail;
+       }
+-      ret = i2c_smbus_read_i2c_block_data(data->client,
+-              data_reg, sizeof(buf), (u8 *) &buf);
++      ret = i2c_smbus_read_word_swapped(data->client, data_reg);
+       if (ret < 0)
+               goto fail;
+       mutex_unlock(&data->lock);
+-      *val = be16_to_cpu(buf);
++      *val = ret;
+       return 0;
+-- 
+2.25.1
+
index 72831eb1b8174e0274775680cf9bbcb6a31a7754..52ab0dc551cffefc74e6d255a471a94518218acf 100644 (file)
@@ -37,3 +37,4 @@ tty-hvc_console-fix-crashes-on-parallel-open-close.patch
 staging-rtl8712-fix-ieee80211_addba_param_buf_size_mask.patch
 cdc-acm-heed-quirk-also-in-error-handling.patch
 nvmem-qfprom-remove-incorrect-write-support.patch
+iio-vcnl4000-fix-i2c-swapped-word-reading.patch