From: Sasha Levin Date: Tue, 9 Jun 2020 12:03:27 +0000 (-0400) Subject: Fixes for 4.14 X-Git-Tag: v5.7.2~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=382a9f0c24a2b4e15bc335e5fc5abe5353cd05c3;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.14 Signed-off-by: Sasha Levin --- 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 index 00000000000..bbb78a65c85 --- /dev/null +++ b/queue-4.14/iio-vcnl4000-fix-i2c-swapped-word-reading.patch @@ -0,0 +1,56 @@ +From 08d2f5df7061ab22b32182909fdb69aee61c465f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 3 May 2020 11:29:55 +0200 +Subject: iio: vcnl4000: Fix i2c swapped word reading. + +From: Mathieu Othacehe + +[ 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 +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Sasha Levin +--- + 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 + diff --git a/queue-4.14/series b/queue-4.14/series index 72831eb1b81..52ab0dc551c 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -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