Scan elements for x,y,z channels is little endian and requires no bit shifts. LE vs. BE is controlled in register SENS_CONFIG2 and bit LE_BE, default value is LE.
Fixes: a3e0b51884ee ("iio: accel: add support for FXLS8962AF/FXLS8964AF accelerometers") Signed-off-by: Sean Nyekjaer sean@geanix.com Cc: stable@vger.kernel.org --- drivers/iio/accel/fxls8962af-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index 0d672b1469e8..bf7949e51e6c 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -724,8 +724,8 @@ static const struct iio_event_spec fxls8962af_event[] = { .sign = 's', \ .realbits = 12, \ .storagebits = 16, \ - .shift = 4, \ - .endianness = IIO_BE, \ + .shift = 0, \ + .endianness = IIO_LE, \ }, \ .event_spec = fxls8962af_event, \ .num_event_specs = ARRAY_SIZE(fxls8962af_event), \
Remove special errata handling if FXLS8964AF is used.
Fixes: af959b7b96b8 ("iio: accel: fxls8962af: fix errata bug E3 - I2C burst reads") Signed-off-by: Sean Nyekjaer sean@geanix.com Cc: stable@vger.kernel.org --- drivers/iio/accel/fxls8962af-core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index bf7949e51e6c..3f27834ef04c 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -904,9 +904,10 @@ static int fxls8962af_fifo_transfer(struct fxls8962af_data *data, int total_length = samples * sample_length; int ret;
- if (i2c_verify_client(dev)) + if (i2c_verify_client(dev) && + data->chip_info->chip_id == FXLS8962AF_DEVICE_ID) /* - * Due to errata bug: + * Due to errata bug (only applicable on fxls8962af): * E3: FIFO burst read operation error using I2C interface * We have to avoid burst reads on I2C.. */
On Mon, 5 Jun 2023 12:32:22 +0200 Sean Nyekjaer sean@geanix.com wrote:
Remove special errata handling if FXLS8964AF is used.
Fixes: af959b7b96b8 ("iio: accel: fxls8962af: fix errata bug E3 - I2C burst reads") Signed-off-by: Sean Nyekjaer sean@geanix.com Cc: stable@vger.kernel.org
Applied to the fixes-togreg branch of iio.git
Thanks,
Jonathan
drivers/iio/accel/fxls8962af-core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index bf7949e51e6c..3f27834ef04c 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -904,9 +904,10 @@ static int fxls8962af_fifo_transfer(struct fxls8962af_data *data, int total_length = samples * sample_length; int ret;
- if (i2c_verify_client(dev))
- if (i2c_verify_client(dev) &&
/*data->chip_info->chip_id == FXLS8962AF_DEVICE_ID)
* Due to errata bug:
* Due to errata bug (only applicable on fxls8962af):
*/
- E3: FIFO burst read operation error using I2C interface
- We have to avoid burst reads on I2C..
On Mon, 5 Jun 2023 12:32:21 +0200 Sean Nyekjaer sean@geanix.com wrote:
Scan elements for x,y,z channels is little endian and requires no bit shifts. LE vs. BE is controlled in register SENS_CONFIG2 and bit LE_BE, default value is LE.
Fixes: a3e0b51884ee ("iio: accel: add support for FXLS8962AF/FXLS8964AF accelerometers") Signed-off-by: Sean Nyekjaer sean@geanix.com Cc: stable@vger.kernel.org
Hmm. I'm not going to ask how this didn't come up in testing before now...
drivers/iio/accel/fxls8962af-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index 0d672b1469e8..bf7949e51e6c 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -724,8 +724,8 @@ static const struct iio_event_spec fxls8962af_event[] = { .sign = 's', \ .realbits = 12, \ .storagebits = 16, \
.shift = 4, \
.endianness = IIO_BE, \
.shift = 0, \
We'd normally not explicitly specify shift = 0 as that's both the obvious default and what C will give us for free.
I'll tidy that up whilst applying.
Applied to the fixes-togreg branch of iio.git.
Thanks,
Jonathan
}, \ .event_spec = fxls8962af_event, \ .num_event_specs = ARRAY_SIZE(fxls8962af_event), \.endianness = IIO_LE, \
linux-stable-mirror@lists.linaro.org