Re: [PATCH v3 0/6] Support ROHM BM1390 pressure sensor

From: Jonathan Cameron
Date: Sun Sep 24 2023 - 11:53:59 EST


On Fri, 22 Sep 2023 14:14:52 +0300
Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:

> ROHM BM1390 Pressure sensor (BM1390GLV-Z) can measure pressures ranging
> from 300 hPa to 1300 hPa with configurable measurement averaging and an
> internal FIFO. The sensor does also provide temperature measurements
> although, according to the data sheet, sensor performs internal
> temperature compensation for the MEMS.
>
> Sensor does also contain IIR filter implemented in HW. The data-sheet
> says the IIR filter can be configured to be "weak", "middle" or
> "strong". Some RMS noise figures are provided in data sheet but no
> accurate maths for the filter configurations is provided.
>
> I actually asked if we can define 3db frequencies corresponding to these
> IIR filter settings - and I received values 0.452Hz, 0.167Hz, and 0.047Hz
> but I am not at all sure we understood each others with the HW
> colleagues... Hence, the IIR filter configuration is not supported by this
> driver and the filter is just configured to the "middle" setting.
> (at least for now)
>
> It would also be possible to not use IIR filter but just do some simple
> averaging. I wonder if it would make sense to implement the OVERSAMPLING
> value setting so that if this value is written, IIR filter is disabled and
> number of samples to be averaged is set to value requested by
> OVERSAMPLING. The data-sheet has a mention that if IIR is used, the
> number of averaged samples must be set to a fixed value.
>
> The FIFO measurement mode (in sensor hardware) is only measuring the
> pressure and not the temperature. The driver measures temperature when
> FIFO is flushed and simply uses the same measured temperature value to
> all reported temperatures. This should not be a problem when temperature
> is not changing very rapidly (several degrees C / second) but allows users
> to get the temperature measurements from sensor without any additional
> logic.
>
> This driver has received limited amount of testing this far. It's in a
> state 'works on my machine, for my use cases' - and all feedback is
> appreciated!

At somepoint we'll just have to decide it's enough. To be honest most
drivers in IIO get testing along those lines and we find bugs years
later when someone tries something a little different!

>
> Revision history:
> Major changes here, please see the head room of individual patches for
> more detailed list.
> v2 => v3:
> rebased on v6.6-rc2

Stick to rc1 though I doubt it makes much difference. The IIO tree
will remain based on v6.6-rc1 until it is rebased after Greg takes
a pull request.

Jonathan

> added three IIO fixup patches so numbering of patches changed
> dt-bindings/MAINTAINERS: No changes
> bm1390 driver:
> - various cleanups and fixes
> - do not disable IRQ
> - fix temperature reading when FIFO is used
> - separate buffer and trigger initialization
>
> v1 => v2:
> rebased on v6.6-rc1
> dt-bindings:
> - fix compatible in the example
> sensor driver:
> - drop unnecessary write_raw callback
> - plenty of small improvements and fixes
> MAINTAINERS:
> - No changes
>
> Matti Vaittinen (6):
> tools: iio: iio_generic_buffer ensure alignment
> iio: improve doc for available_scan_mask
> iio: try searching for exact scan_mask
> dt-bindings: Add ROHM BM1390 pressure sensor
> iio: pressure: Support ROHM BU1390
> MAINTAINERS: Add ROHM BM1390
>
> .../bindings/iio/pressure/rohm,bm1390.yaml | 52 +
> MAINTAINERS | 6 +
> drivers/iio/industrialio-buffer.c | 25 +-
> drivers/iio/pressure/Kconfig | 9 +
> drivers/iio/pressure/Makefile | 1 +
> drivers/iio/pressure/rohm-bm1390.c | 930 ++++++++++++++++++
> include/linux/iio/iio.h | 4 +-
> tools/iio/iio_generic_buffer.c | 15 +-
> 8 files changed, 1034 insertions(+), 8 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/iio/pressure/rohm,bm1390.yaml
> create mode 100644 drivers/iio/pressure/rohm-bm1390.c
>
>
> base-commit: ce9ecca0238b140b88f43859b211c9fdfd8e5b70