[PATCH v5 0/5] Add ADXL367 driver

Cosmin Tanislav posted 5 patches 2 years, 1 month ago
Documentation/ABI/testing/sysfs-bus-iio       |   30 +
.../bindings/iio/accel/adi,adxl367.yaml       |   79 +
MAINTAINERS                                   |    8 +
drivers/iio/accel/Kconfig                     |   27 +
drivers/iio/accel/Makefile                    |    3 +
drivers/iio/accel/adxl367.c                   | 1588 +++++++++++++++++
drivers/iio/accel/adxl367.h                   |   23 +
drivers/iio/accel/adxl367_i2c.c               |   90 +
drivers/iio/accel/adxl367_spi.c               |  164 ++
drivers/iio/industrialio-event.c              |    1 +
include/uapi/linux/iio/types.h                |    1 +
tools/iio/iio_event_monitor.c                 |    1 +
12 files changed, 2015 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/accel/adi,adxl367.yaml
create mode 100644 drivers/iio/accel/adxl367.c
create mode 100644 drivers/iio/accel/adxl367.h
create mode 100644 drivers/iio/accel/adxl367_i2c.c
create mode 100644 drivers/iio/accel/adxl367_spi.c
[PATCH v5 0/5] Add ADXL367 driver
Posted by Cosmin Tanislav 2 years, 1 month ago
The ADXL367 is an ultralow power, 3-axis MEMS accelerometer.

The ADXL367 does not alias input signals to achieve ultralow power
consumption, it samples the full bandwidth of the sensor at all
data rates. Measurement ranges of +-2g, +-4g, and +-8g are available,
with a resolution of 0.25mg/LSB on the +-2 g range.

In addition to its ultralow power consumption, the ADXL367
has many features to enable true system level power reduction.
It includes a deep multimode output FIFO, a built-in micropower
temperature sensor, and an internal ADC for synchronous conversion
of an additional analog input.

V1 -> V2
 * add support for vdd and vddio supplies
 * lock fifo_watermark retrieval
 * fix indentation of sysfs_emit for fifo_mode
 * dt-bindings: add spi-max-frequency: true
 * dt-bindings: remove cs-gpios property
 * dt-bindings: remove status property
 * dt-bindings: add support for vdd

V2 -> V3
 * MAINTAINERS: use wildcard for adxl367
 * dt-bindings: adxl367@addr -> accelerometer@addr
 * put asm include after linux includes
 * drop registers accessed implicitly
 * fifo_full -> fifo_watermark
 * print expected device id
 * remove INDIO_BUFFER_HARDWARE
 * inline ADXL367_EVENT macro
 * inline ADXL367_14BIT_SCAN_INFO
 * inline regulator enum
 * remove of.h in spi driver
 * cast const void * to const u8 * in spi read
 * switch to trigger-less buffer
 * increase reset time as advised by hardware team
 * let iio framework validate available channel masks
 * enable adc or temp channel automatically on single read
 * wait for 100ms after enabling adc or temp for output
   to settle on single read (waiting on hardware team input)
 * enable adc or temp channel automatically on buffered read
 * claim direct mode when setting range
 * claim direct mode when setting odr
 * claim direct mode when setting event config
 * sort status masks in descending bit order
 * hardcode indio_dev name
 * add some comments regarding spi message layout
 * use bulk_write for activity and inactivity threshold
 * use bulk_write for inactivity time
 * use bool as return type of fifo format finding function
 * remove shift from channels scan type

V3 -> V4
 * add a patch that introduces mag_referenced event type
 * add a patch that documents mag_referenced event type
 * add a patch that adds a note to the buffer/enable documentation
   regarding configuration of other attributes during buffer capture
 * remove unused adxl367_time_scale_tbl
 * add static attribute to adxl367_write_raw_get_fmt
 * return IRQ_HANDLED when FIFO read fails and print error message
 * scale temperature value by 1000 to reach milli degrees C
 * merge dev_to_iio_dev into useplace when indio_dev is not needed
 * merge preenable into postenable and postdisable into predisable
 * fix default inactivity threshold
 * export probe symbol to namespace
 * IIO_EV_TYPE_THRESH -> IIO_EV_TYPE_MAG_REFERENCED
 * reset device and then verify dev id for 10ms
 * share events by type so that they show up with iio_accel prefix in the
   events subdirectory
 * use a separate mask for extracting data
   I previously removed the shift fron scan_type since the FIFO data does
   not contain a shift but that broke single channel reads. Add it back
   just for single channel reads.

V4 -> V5
 * linux/module.h -> linux/mod_devicetable.h
 * extract fifo_formats into separate array to allow arbitrary scan mask
   order
 * reorder channel_masks and fifo_formats
 * prepend IIO_ to ADXL367 namespace
 * use adxl367_fifo_formats array size to iterate over channel_masks table

Cosmin Tanislav (5):
  iio: introduce mag_referenced
  iio: ABI: document mag_referenced
  iio: ABI: add note about configuring other attributes during buffer
    capture
  dt-bindings: iio: accel: add ADXL367
  iio: accel: add ADXL367 driver

 Documentation/ABI/testing/sysfs-bus-iio       |   30 +
 .../bindings/iio/accel/adi,adxl367.yaml       |   79 +
 MAINTAINERS                                   |    8 +
 drivers/iio/accel/Kconfig                     |   27 +
 drivers/iio/accel/Makefile                    |    3 +
 drivers/iio/accel/adxl367.c                   | 1588 +++++++++++++++++
 drivers/iio/accel/adxl367.h                   |   23 +
 drivers/iio/accel/adxl367_i2c.c               |   90 +
 drivers/iio/accel/adxl367_spi.c               |  164 ++
 drivers/iio/industrialio-event.c              |    1 +
 include/uapi/linux/iio/types.h                |    1 +
 tools/iio/iio_event_monitor.c                 |    1 +
 12 files changed, 2015 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adi,adxl367.yaml
 create mode 100644 drivers/iio/accel/adxl367.c
 create mode 100644 drivers/iio/accel/adxl367.h
 create mode 100644 drivers/iio/accel/adxl367_i2c.c
 create mode 100644 drivers/iio/accel/adxl367_spi.c

-- 
2.35.1