This series add a new driver for managing InvenSense ICM-426xx 6-axis IMUs. This next generation of chips includes new generations of 3-axis gyroscope and 3-axis accelerometer, support of I3C in addition to I2C and SPI, and intelligent MotionTracking features like pedometer, tilt detection, and tap detection. This series is delivering a driver supporting gyroscope, accelerometer and temperature data, with polling and buffering using hwfifo and watermark, on I2C and SPI busses. Gyroscope and accelerometer sensors are completely independent and can have different ODRs. Since there is only a single FIFO a specific value is used to mark invalid data. For keeping the device standard we are de-multiplexing data from the FIFO to 2 IIO devices with 2 buffers, 1 for the accelerometer and 1 for the gyroscope. This architecture also enables to easily turn each sensor on/off without impacting the other. The IIO devices are using triggered buffer as sub-interrupts of the device iio trigger using the interrupt pin. A complex timestamping mechanism is added to handle correctly FIFO watermark and dynamic changes. Jean-Baptiste Maneyrol (12): iio: imu: inv_icm42600: add core of new inv_icm42600 driver iio: imu: inv_icm42600: add I2C driver for inv_icm42600 driver iio: imu: inv_icm42600: add SPI driver for inv_icm42600 driver iio: imu: inv_icm42600: add gyroscope IIO device iio: imu: inv_icm42600: add accelerometer IIO device iio: imu: inv_icm42600: add temperature sensor support iio: imu: add Kconfig and Makefile for inv_icm42600 driver iio: imu: inv_icm42600: add device interrupt trigger iio: imu: inv_icm42600: add buffer support in iio devices iio: imu: inv_icm42600: add accurate timestamping dt-bindings: iio: imu: Add inv_icm42600 documentation MAINTAINERS: add entry for inv_icm42600 6-axis imu sensor .../bindings/iio/imu/invensense,icm42600.yaml | 90 +++ MAINTAINERS | 8 + drivers/iio/imu/Kconfig | 1 + drivers/iio/imu/Makefile | 1 + drivers/iio/imu/inv_icm42600/Kconfig | 30 + drivers/iio/imu/inv_icm42600/Makefile | 16 + drivers/iio/imu/inv_icm42600/inv_icm42600.h | 400 +++++++++ .../iio/imu/inv_icm42600/inv_icm42600_accel.c | 752 +++++++++++++++++ .../imu/inv_icm42600/inv_icm42600_buffer.c | 373 +++++++++ .../imu/inv_icm42600/inv_icm42600_buffer.h | 162 ++++ .../iio/imu/inv_icm42600/inv_icm42600_core.c | 674 +++++++++++++++ .../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 764 ++++++++++++++++++ .../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 117 +++ .../iio/imu/inv_icm42600/inv_icm42600_spi.c | 117 +++ .../iio/imu/inv_icm42600/inv_icm42600_temp.c | 86 ++ .../iio/imu/inv_icm42600/inv_icm42600_temp.h | 32 + .../imu/inv_icm42600/inv_icm42600_timestamp.c | 246 ++++++ .../imu/inv_icm42600/inv_icm42600_timestamp.h | 82 ++ .../imu/inv_icm42600/inv_icm42600_trigger.c | 188 +++++ 19 files changed, 4139 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml create mode 100644 drivers/iio/imu/inv_icm42600/Kconfig create mode 100644 drivers/iio/imu/inv_icm42600/Makefile create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600.h create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.h create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_core.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_temp.h create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.c create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.h create mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_trigger.c -- 2.17.1