[PATCH v7 00/11] iio: accel: adxl345: add interrupt based sensor events

Lothar Rubusch posted 11 patches 7 months, 4 weeks ago
There is a newer version of this series
Documentation/iio/adxl345.rst    |  423 +++++++++
drivers/iio/accel/adxl345.h      |    2 +-
drivers/iio/accel/adxl345_core.c | 1413 +++++++++++++++++++++++++++++-
3 files changed, 1792 insertions(+), 46 deletions(-)
create mode 100644 Documentation/iio/adxl345.rst
[PATCH v7 00/11] iio: accel: adxl345: add interrupt based sensor events
Posted by Lothar Rubusch 7 months, 4 weeks ago
Add several interrupt based sensor detection events:
- single tap
- double tap
- free fall
- activity
- inactivity
- sample frequency
- full frequency g range approach
- documentation

All the needed parameters for each and methods of adjusting them, and
forward a resulting IIO event for each to the IIO channel.

Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
---
v6 -> v7:
- freefall: add a virtual channel, replace OR'ing the axis by AND'ing them
- inactivity: add a virtual channel, replace OR'ing the axis by AND'ing them

v5 -> v6:
- replace bool axis_en for tap and activity/inactivity
- apply freefall bit mask
- change `measure_en` to use `regmap_update_bits()` for POWER_CTL register
- fix comments and update documentation, particularly on inactivity time

v4 -> v5:
- read_config_value() and write_config_value() now use direct returns,
  in case of a failure, measurement stays turned off
- fifo evaluation returns 0 in case of success
- axis enum turned into three different set of defines for tap, act and inact
- turn the suppress bit into a separate define macro
- variable naming, generally use axis_ctrl for similar variables

v3 -> v4:
- rename patch "add double tap suppress bit" to
  "set the tap suppress bit permanently" to make it more comprehensive
- added patch "cleanup regmap return values"
- added patch "introduce adxl345_push_event function", as a solution
  to the return value problem, group all int_stat evaluating pieces
  in the same function
- tap, act and inact axis enabling are using now regmap cache
- activity enable depending on individual axis now, as the sensor offers
  such feature
- inactivity enable depending on individual axis now, as the sensor offers
  such feature
- fix bug in previous patch: separate axis direction in interrupt handler
  sharing the same variable for tap and activity, if tap and activity
  enabled together
- refac of the direction identification of previous patch: only read
  act/tap axis once now in interrupt handler if both is enabled
- fix bug in previous patch: return value of pushed event in interrupt
  handler
- several cleanups

v2 -> v3:
- generally introduction of regmap cache for all directly stored 8-bit
  values, specification of volatile regs and cleanup
- moving thresholds, unchanged values and flags to regmap cache, in
  consequence removal of corresponding member values of the state
  instance
- removal of intio and int_map member fields due to regmap cache, thus
  split of set_interrupts() patches in two parts
- rework documentation
- rework of ac-bit comment

v1 -> v2:
- implementation of all events (but tap2 suppress bit) by means IIO ABI
- add sample frequency / ODR configuration
- add g ranges configuration
- add activity/inactivity using auto-sleep and powersave
- add dynamic adjustment of default values for
  activity/inactivity thresholds and time for inactivity based on ODR
  and g range (can be overwritten)
- add sensor documentation
---
Lothar Rubusch (11):
  iio: accel: adxl345: introduce adxl345_push_event function
  iio: accel: adxl345: add single tap feature
  iio: accel: adxl345: add double tap feature
  iio: accel: adxl345: set the tap suppress bit permanently
  iio: accel: adxl345: add freefall feature
  iio: accel: adxl345: extend sample frequency adjustments
  iio: accel: adxl345: add g-range configuration
  iio: accel: adxl345: add activity event feature
  iio: accel: adxl345: add inactivity feature
  iio: accel: adxl345: add coupling detection for activity/inactivity
  docs: iio: add documentation for adxl345 driver

 Documentation/iio/adxl345.rst    |  423 +++++++++
 drivers/iio/accel/adxl345.h      |    2 +-
 drivers/iio/accel/adxl345_core.c | 1413 +++++++++++++++++++++++++++++-
 3 files changed, 1792 insertions(+), 46 deletions(-)
 create mode 100644 Documentation/iio/adxl345.rst

-- 
2.39.5
Re: [PATCH v7 00/11] iio: accel: adxl345: add interrupt based sensor events
Posted by Jonathan Cameron 7 months, 3 weeks ago
On Mon, 21 Apr 2025 22:06:30 +0000
Lothar Rubusch <l.rubusch@gmail.com> wrote:

> Add several interrupt based sensor detection events:
> - single tap
> - double tap
> - free fall
> - activity
> - inactivity
> - sample frequency
> - full frequency g range approach
> - documentation
> 
> All the needed parameters for each and methods of adjusting them, and
> forward a resulting IIO event for each to the IIO channel.
> 
> Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>

Hi.
As you'll see if you follow replies through. I tweaked and queued much of this
but then noticed some issues in patch 9.  Hence I've bounced it back to you and
backed out the patches from my tree for now.

Please either incorporate the changes I mentioned (or point out why they are wrong!)

Also rebase the whole thing iio.git/togreg so that you don't have the patches
that are already applied in v8.

Thanks,

Jonathan