linux/drivers/iio
Mike Looijmans 73f3bc6da5 iio:chemical:bme680: Fix SPI read interface
The SPI interface implementation was completely broken.

When using the SPI interface, there are only 7 address bits, the upper bit
is controlled by a page select register. The core needs access to both
ranges, so implement register read/write for both regions. The regmap
paging functionality didn't agree with a register that needs to be read
and modified, so I implemented a custom paging algorithm.

This fixes that the device wouldn't even probe in SPI mode.

The SPI interface then isn't different from I2C, merged them into the core,
and the I2C/SPI named registers are no longer needed.

Implemented register value caching for the registers to reduce the I2C/SPI
data transfers considerably.

The calibration set reads as all zeroes until some undefined point in time,
and I couldn't determine what makes it valid. The datasheet mentions these
registers but does not provide any hints on when they become valid, and they
aren't even enumerated in the memory map. So check the calibration and
retry reading it from the device after each measurement until it provides
something valid.

Despite the size this is suitable for a stable backport given that
it seems the SPI support never worked.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Fixes: 1b3bd85927 ("iio: chemical: Add support for Bosch BME680 sensor");
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2019-03-09 17:27:36 +00:00
..
accel iio:accel:adxl345: Change alignment to match paranthesis 2019-02-09 18:46:02 +00:00
adc iio: adc: at91: disable adc channel interrupt in timeout case 2019-03-09 16:55:07 +00:00
afe iio: afe: rescale: new driver 2018-04-28 18:03:22 +01:00
amplifiers drivers: iio: Update MODULE AUTHOR email address 2018-08-19 17:23:39 +01:00
buffer iio:kfifo_buf: check for uint overflow 2018-03-30 11:16:12 +01:00
chemical iio:chemical:bme680: Fix SPI read interface 2019-03-09 17:27:36 +00:00
common iio: hid-sensor-hub: clean up indentation, remove extraneous tab 2018-11-25 14:03:59 +00:00
counter iio: 104-quad-8: Provide defines for magic numbers 2018-06-10 11:52:30 +01:00
dac iio:dac:ti-dac7612: Add driver for Texas Instruments DAC7612 2019-02-09 18:46:02 +00:00
dummy iio:dummy: Add extra paragraphs on Kconfig 2018-03-03 15:20:16 +00:00
frequency iio: ad9523: fix a missing check of return value 2019-01-05 16:10:50 +00:00
gyro iio: gyro: mpu3050: fix chip ID reading 2019-03-09 16:55:06 +00:00
health iio: health: max30102: Mark expected switch fall-throughs 2018-08-19 17:21:35 +01:00
humidity iio/hid-sensors: Fix IIO_CHAN_INFO_RAW returning wrong values for signed numbers 2018-11-16 11:42:12 +00:00
imu iio:bmi160: use if (ret) instead of if (ret < 0) 2019-02-09 15:25:25 +00:00
light iio: light: add driver for MAX44009 2019-02-02 15:47:46 +00:00
magnetometer iio: magnetometer: mag3110: add vdd/vddio regulator operation support 2019-01-12 19:00:23 +00:00
multiplexer iio: multiplexer: switch to SPDX license identifier 2018-08-20 19:28:26 +01:00
orientation iio/hid-sensors: Fix IIO_CHAN_INFO_RAW returning wrong values for signed numbers 2018-11-16 11:42:12 +00:00
potentiometer iio: potentiometer: Add driver for Microchip MCP41xxx/42xxx 2018-11-25 12:35:26 +00:00
potentiostat iio: potentiostat: lmp91000: add LMP91002 support 2018-05-12 11:02:44 +01:00
pressure iio:st_pressure:initial lps22hh sensor support 2019-01-19 17:32:41 +00:00
proximity iio: proximity: Add driver support for ST's VL53L0X ToF ranging sensor. 2018-09-22 16:42:56 +01:00
resolver staging:iio:ad2s90: Move out of staging 2018-12-01 15:40:39 +00:00
temperature iio/hid-sensors: Fix IIO_CHAN_INFO_RAW returning wrong values for signed numbers 2018-11-16 11:42:12 +00:00
trigger drivers: iio: Update MODULE AUTHOR email address 2018-08-19 17:23:39 +01:00
iio_core_trigger.h
iio_core.h the rest of drivers/*: annotate ->poll() instances 2017-11-28 11:06:58 -05:00
industrialio-buffer.c iio: Fix scan mask selection 2019-03-09 16:55:06 +00:00
industrialio-configfs.c iio: make function argument and some structures const 2017-10-19 16:15:24 +02:00
industrialio-core.c iio: add IIO_MASSCONCENTRATION channel type 2018-12-16 14:05:57 +00:00
industrialio-event.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
industrialio-sw-device.c iio: make function argument and some structures const 2017-10-19 16:15:24 +02:00
industrialio-sw-trigger.c iio: make function argument and some structures const 2017-10-19 16:15:24 +02:00
industrialio-trigger.c
industrialio-triggered-event.c
inkern.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
Kconfig staging: iio: ad2s1200: Move driver out of staging 2018-05-20 12:17:48 +01:00
Makefile staging: iio: ad2s1200: Move driver out of staging 2018-05-20 12:17:48 +01:00