2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-22 20:23:57 +08:00
linux-next/drivers/iio/chemical
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
..
ams-iaq-core.c iio: add SPDX identifier for various drivers 2018-02-18 11:55:19 +00:00
atlas-ph-sensor.c iio: chemical: atlas-ph-sensor: correct IIO_TEMP values to millicelsius 2019-01-12 17:06:49 +00:00
bme680_core.c iio:chemical:bme680: Fix SPI read interface 2019-03-09 17:27:36 +00:00
bme680_i2c.c iio:chemical:bme680: Fix SPI read interface 2019-03-09 17:27:36 +00:00
bme680_spi.c iio:chemical:bme680: Fix SPI read interface 2019-03-09 17:27:36 +00:00
bme680.h iio:chemical:bme680: Fix SPI read interface 2019-03-09 17:27:36 +00:00
ccs811.c Merge 4.16-rc7 into staging-next 2018-03-28 13:33:37 +02:00
Kconfig iio: chemical: fix missing Kconfig block for sgp30 2019-03-09 16:59:03 +00:00
Makefile iio: chemical: add support for Plantower PMS7003 sensor 2019-02-11 20:19:33 +00:00
pms7003.c iio: chemical: add support for Plantower PMS7003 sensor 2019-02-11 20:19:33 +00:00
sgp30.c iio: chemical: sgp30: Support Sensirion SGP30/SGPC3 sensors 2018-12-16 14:05:58 +00:00
sps30.c iio:chemical:sps30 Supress some switch fallthrough warnings. 2019-02-11 20:07:51 +00:00
vz89x.c iio: add SPDX identifier for various drivers 2018-02-18 11:55:19 +00:00