[PATCH v5 0/5] iio: accel: adxl345: Implement event scaling and ABI compliance

Taha Ed-Dafili
2026-02-24T14:03:58Z

This series addresses ADXL345 driver non-compliance with the IIO ABI.

Currently, the driver exposes raw threshold values without a scale factor
to convert them to SI units (m/s^2). It also hides the double tap
threshold value because it shares a hardware register with single tap,
which violates ABI expectations.

This series implements `IIO_EV_INFO_SCALE` in the IIO core and applies it
to the ADXL345 driver. It also exposes the missing `IIO_EV_INFO_VALUE` for
double tap, ensuring userspace can correctly interpret all events, and
cleans up related documentation.

Changes in v5:
- Split the series into 5 patches for better logical separation.
- Patch 1: Moved alphabetical sorting of the event attribute table here
(David Lechner).
- Patch 3 (new): Expose `IIO_EV_INFO_VALUE` for the double tap event to
ensure ABI compliance (Jonathan Cameron).
- Patch 5: Add the newly exposed `in_accel_gesture_doubletap_value` to
the documentation.

Changes in v4:
- Fixed missing IIO_EV_INFO_SCALE handling for MAG/MAG_ADAPTIVE events.
- Explicitly rejected writes to IIO_EV_INFO_SCALE with -EINVAL.
- Fixed bitmask ordering and whitespace alignment.
- Updated documentation with exact sysfs scale attributes.

Changes in v3:
- Reverted "axis" to "axes" in documentation.
- Removed repetitive scale values from documentation table.

Changes in v2:
- Added core infrastructure for IIO_EV_INFO_SCALE.
- Implemented event scaling (0.612915 m/s^2) for ADXL345.

Thanks to David Lechner for the structural patch feedback and Jonathan
Cameron for the architectural guidance on ABI compliance.

Taha Ed-Dafili (5):
docs: iio: adxl345: grammar and formatting cleanups
iio: core: Add IIO_EV_INFO_SCALE to event info
iio: accel: adxl345: Expose IIO_EV_INFO_VALUE for double tap
iio: accel: adxl345: Implement event scaling for ABI compliance
docs: iio: adxl345: update event attributes and scaling math

Documentation/iio/adxl345.rst | 81 ++++++++++++++++++++------------
drivers/iio/accel/adxl345_core.c | 38 ++++++++++-----
drivers/iio/industrialio-event.c | 1 +
include/linux/iio/types.h | 1 +
4 files changed, 81 insertions(+), 40 deletions(-)

--
2.47.3