[v3,0/7] Add support for pressure sensor Bosch BMP580

Message ID cover.1674954271.git.ang.iglesiasg@gmail.com
Headers
Series Add support for pressure sensor Bosch BMP580 |

Message

Angel Iglesias Jan. 29, 2023, 1:33 a.m. UTC
  This patchset adds support for the new pressure sensors BMP580 extending
the bmp280 driver.

Patch 1 introduces a minor refactor of the driver structure to change how
the device matching and driver initialization is performed. In place of
the chips ids, the driver_data now contains a pointer to its chip_info.
To perform this change, a series of declarations previously on the core
file were migrated to the shared header file, to allow access to specific
fields on the chip_info on the I2C and SPI drivers. This change is
required because BMP380 and BMP580 have the same chip_id and values would
collide using the chip_id as the driver_data value.
Patch 2 introduces new preinit callback and unifies init logic across all
supported variants.
Patch 3 made calibration callback function optional.
Patch 4 deletes misleading i2c reference on bmp280 Kconfig entry.
Patch 5 extends the bmp280 driver with the new logic to read measurements
and configure the operation parameters for the BMP580 sensors.
Patch 6 updates the devicetree binding docs with the new sensor id.
Patch 7 adds the NVMEM operations to read and program the NVM user range
contained in the non-volatile memory of the BMP580 sensors.

Changes in v3:
* Refactor driver structure to use chip_info structs as driver_data and
  updated i2c and spi implementations device match codepaths.
* Deleted Kconfig driver title misleading i2c reference.
* Made calibration reading optional as a prerequisite patch in preparation
  for the bmp580 built in compensation.
* Break command helper function in soft-reset helper function and NVM
  operation helper.
* Fixed minor styling issues thorough patches.

Changes in v2:
* For patch 3, fixed missing retcodes reported by the kernel test robot.
* For patch 5, fixed logic paths that left the sensor mutex locked
  reported by the kernel test robot.

Angel Iglesias (7):
  iio: pressure: bmp280: Use chip_info pointers for each chip as driver
    data
  iio: pressure: bmp280: Add preinit callback
  iio: pressure: bmp280: Make read calibration callback optional
  iio: pressure: Kconfig: Delete misleading I2C reference on bmp280
    title
  iio: pressure: bmp280: Add support for new sensor BMP580
  dt-bindings: iio: pressure: bmp085: Add BMP580 compatible string
  iio: pressure: bmp280: Add nvmem operations for BMP580

 .../bindings/iio/pressure/bmp085.yaml         |   2 +
 drivers/iio/pressure/Kconfig                  |   6 +-
 drivers/iio/pressure/bmp280-core.c            | 762 ++++++++++++++----
 drivers/iio/pressure/bmp280-i2c.c             |  45 +-
 drivers/iio/pressure/bmp280-regmap.c          |  60 ++
 drivers/iio/pressure/bmp280-spi.c             |  47 +-
 drivers/iio/pressure/bmp280.h                 | 273 ++++++-
 7 files changed, 958 insertions(+), 237 deletions(-)


base-commit: 354f23ac2c8703d170354577738edad159a7d37b
  

Comments

Andy Shevchenko Jan. 30, 2023, 12:30 p.m. UTC | #1
On Sun, Jan 29, 2023 at 02:33:02AM +0100, Angel Iglesias wrote:
> This patchset adds support for the new pressure sensors BMP580 extending
> the bmp280 driver.
> 
> Patch 1 introduces a minor refactor of the driver structure to change how
> the device matching and driver initialization is performed. In place of
> the chips ids, the driver_data now contains a pointer to its chip_info.
> To perform this change, a series of declarations previously on the core
> file were migrated to the shared header file, to allow access to specific
> fields on the chip_info on the I2C and SPI drivers. This change is
> required because BMP380 and BMP580 have the same chip_id and values would
> collide using the chip_id as the driver_data value.
> Patch 2 introduces new preinit callback and unifies init logic across all
> supported variants.
> Patch 3 made calibration callback function optional.
> Patch 4 deletes misleading i2c reference on bmp280 Kconfig entry.
> Patch 5 extends the bmp280 driver with the new logic to read measurements
> and configure the operation parameters for the BMP580 sensors.
> Patch 6 updates the devicetree binding docs with the new sensor id.
> Patch 7 adds the NVMEM operations to read and program the NVM user range
> contained in the non-volatile memory of the BMP580 sensors.

Patches 1-5 are good enough for me,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

If anything, we can fix in the followups.