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