From: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@xxxxxxx> Add WoM (Wake-on-Motion) feature for all chips supporting it (all except MPU-6000/6050/9150). WoM compares the magnitude of the current accel sample with the previous one against a threshold and returns an interrupt event if the value is higher. WoM is checking against all axes and maps best to ROC since it compares the last 2 samples. Thus report WoM as an accel x|y|z roc_rising IIO event, add system wakeup functionality if WoM is on and put the chip in low-power mode when the system is suspended. Corresponding ROC value is in SI units since the chip is using an absolute value in mg. v2: - Rework to use accel x|y|z roc for reporting WoM event - Use only datasheet advertised bits for MPU-6500 family chips v3 - Coding style fixes - Convert mutex usage to guard/scoped_guard Jean-Baptiste Maneyrol (4): iio: imu: inv_mpu6050: add WoM (Wake-on-Motion) sensor iio: imu: inv_mpu6050: add WoM event as accel event iio: imu: inv_mpu6050: add new interrupt handler for WoM events iio: imu: inv_mpu6050: add WoM suspend wakeup with low-power mode drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 542 ++++++++++++++++-- drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 36 +- drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 17 +- drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 83 ++- 4 files changed, 595 insertions(+), 83 deletions(-) -- 2.34.1