linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lothar Rubusch <l.rubusch@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: lars@metafoo.de, Michael.Hennerich@analog.com,
	linux-iio@vger.kernel.org,  linux-kernel@vger.kernel.org,
	eraretuya@gmail.com
Subject: Re: [PATCH v5 05/11] iio: accel: adxl345: add freefall feature
Date: Mon, 31 Mar 2025 19:23:22 +0200	[thread overview]
Message-ID: <CAFXKEHYMgv1-rt6Sc65fCoki14v==NqQTY6J3WnQBG+ASoLeaw@mail.gmail.com> (raw)
In-Reply-To: <20250331112839.78c2bc71@jic23-huawei>

Hi Jonathan & IIO Mailing List'ers

On Mon, Mar 31, 2025 at 12:28 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Tue, 18 Mar 2025 23:08:37 +0000
> Lothar Rubusch <l.rubusch@gmail.com> wrote:
>
> > Add the freefall detection of the sensor together with a threshold and
> > time parameter. A freefall event is detected if the measuring signal
> > falls below the threshold.
> >
> > Introduce a freefall threshold stored in regmap cache, and a freefall
> > time, having the scaled time value stored as a member variable in the
> > state instance.
> >
> > Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
> Hi Lothar,
>
> Apologies for the slow review!  Just catching up after travel
> and I did it reverse order.

No problem a all, hope you had a great trip! I'm glad this goes for
another version. In the meanwhile I was messing with the zephyr driver
implementation for this sensor and had some findings and final
thoughts about the ADXL345.

First, set_measure_en() I use to enable/disable the measurement by
setting a bit in the POWER_CTL register using regmap_write(). This was
ok until adding the act/inact feature. For adding power modes to
inactivity, I'm going to set the link bit in the same POWER_CTL reg.
So you already guess, yet another call  to set_measure_en() simply
wipes this link bit out immediately. I'll probably replace
regmap_write() using regmap_update_bits() still in this series.

Second, while playing with the zephyr driver and another setup I
discovered, that probably the sensor is capable of mapping events to
both interrupt lines in parallel. Currently, either all events to to
INT1 or to INT2, not both. This affects actually 8 interrupt events:
data ready, single tap, double tap, activity, inactivity, free fall,
watermark, overrun. Actually they could individually be mapped either
to INT1 or INT2.
Initially I assumed they all need to go either to INT1 or INT2
altogether. I appologize for this, I was wrong due to the breakout
board I was using. That's a kind of crazy feature, and I think of
implement it perhaps in a follow up series. Anyway, I was curisous
about the approach, currently only can think of introducing 8x new DTS
properties. Are you aware of sensors with similar features, what is
usually the approach how to implement that? What is your oppinion on
this?

Third item, there are 4 FIFO modes: Bypass and Streaming are currently
used. There is another FIFO mode and further a Trigger mode i.e. only
when the sensor got triggered it fills up the FIFO with data (also
this is mappable by the INT1 or INT2 line then). What would be a way
to configure such feature? I know many of the Analog accelerometers
seem to have FIFO modes. Is this to be configured by DT properties?
What would be means to configure it? Also, this would be a separate
patch set.

Best,
L

>
> > +
> > +static int adxl345_set_ff_en(struct adxl345_state *st, bool cmd_en)
> > +{
> > +     unsigned int regval, ff_threshold;
> > +     const unsigned int freefall_mask = 0x02;
>
> Where did this mask come from?   Feels like it should be a define
> (just use ADXL345_INT_FREE_FALL probably)
> or if not that at lest use BIT(1) to make it clear it's a bit rather
> than the number 2.
>
> > +     bool en;
> > +     int ret;
> > +
> > +     ret = regmap_read(st->regmap, ADXL345_REG_THRESH_FF, &ff_threshold);
> > +     if (ret)
> > +             return ret;
> > +
> > +     en = cmd_en && ff_threshold > 0 && st->ff_time_ms > 0;
> > +
> > +     regval = en ? ADXL345_INT_FREE_FALL : 0x00;
> > +
> > +     return regmap_update_bits(st->regmap, ADXL345_REG_INT_ENABLE,
> > +                               freefall_mask, regval);
> > +}
>
> Jonathan

  reply	other threads:[~2025-03-31 17:23 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-18 23:08 [PATCH v5 00/11] iio: accel: adxl345: add interrupt based sensor events Lothar Rubusch
2025-03-18 23:08 ` [PATCH v5 01/11] iio: accel: adxl345: introduce adxl345_push_event function Lothar Rubusch
2025-03-18 23:08 ` [PATCH v5 02/11] iio: accel: adxl345: add single tap feature Lothar Rubusch
2025-03-31 10:22   ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 03/11] iio: accel: adxl345: add double " Lothar Rubusch
2025-03-18 23:08 ` [PATCH v5 04/11] iio: accel: adxl345: set the tap suppress bit permanently Lothar Rubusch
2025-03-18 23:08 ` [PATCH v5 05/11] iio: accel: adxl345: add freefall feature Lothar Rubusch
2025-03-31 10:28   ` Jonathan Cameron
2025-03-31 17:23     ` Lothar Rubusch [this message]
2025-04-06 11:18       ` Jonathan Cameron
2025-04-14 14:30     ` Lothar Rubusch
2025-04-14 18:28       ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 06/11] iio: accel: adxl345: extend sample frequency adjustments Lothar Rubusch
2025-03-31 10:33   ` Jonathan Cameron
2025-04-14 11:41     ` Lothar Rubusch
2025-04-14 18:30       ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 07/11] iio: accel: adxl345: add g-range configuration Lothar Rubusch
2025-03-18 23:08 ` [PATCH v5 08/11] iio: accel: adxl345: add activity event feature Lothar Rubusch
2025-03-31 10:40   ` Jonathan Cameron
2025-04-14 11:58     ` Lothar Rubusch
2025-04-14 18:31       ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 09/11] iio: accel: adxl345: add inactivity feature Lothar Rubusch
2025-03-31 10:47   ` Jonathan Cameron
2025-04-14 13:19     ` Lothar Rubusch
2025-04-14 18:34       ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 10/11] iio: accel: adxl345: add coupling detection for activity/inactivity Lothar Rubusch
2025-03-31 10:52   ` Jonathan Cameron
2025-03-18 23:08 ` [PATCH v5 11/11] docs: iio: add documentation for adxl345 driver Lothar Rubusch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFXKEHYMgv1-rt6Sc65fCoki14v==NqQTY6J3WnQBG+ASoLeaw@mail.gmail.com' \
    --to=l.rubusch@gmail.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=eraretuya@gmail.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).