public inbox for linux-doc@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Lothar Rubusch <l.rubusch@gmail.com>
Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
	corbet@lwn.net, lucas.p.stankus@gmail.com, lars@metafoo.de,
	Michael.Hennerich@analog.com, bagasdotme@gmail.com,
	linux-iio@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 07/11] iio: accel: adxl313: add activity sensing
Date: Wed, 11 Jun 2025 17:47:51 +0100	[thread overview]
Message-ID: <20250611174751.0612dfc0@jic23-huawei> (raw)
In-Reply-To: <CAFXKEHaRupFmFQ9ixTT_3p_XaoorJP=y4asYjw3dSMpxXhbOwQ@mail.gmail.com>


> > >  static int adxl313_set_watermark(struct iio_dev *indio_dev, unsigned int value)
> > >  {
> > >       struct adxl313_data *data = iio_priv(indio_dev);
> > > @@ -502,19 +705,32 @@ static int adxl313_fifo_push(struct iio_dev *indio_dev, int samples)
> > >
> > >  static int adxl313_push_event(struct iio_dev *indio_dev, int int_stat)  
> >
> > Ah. This does not also have events.  Still it's a mix, so maybe
> > adxl313_handle_interrupts() or something like that.  
> 
> I also could break it up into:
> - handle interrupt source register events
> - drain fifo watermark samples
Sure - if that makes more logical sense that break up is fine.

> ?
> 
> > >  {
> > > +     s64 ts = iio_get_time_ns(indio_dev);
> > >       struct adxl313_data *data = iio_priv(indio_dev);
> > >       int samples;
> > > +     int ret = -ENOENT;
> > > +
> > > +     if (FIELD_GET(ADXL313_INT_ACTIVITY, int_stat)) {
> > > +             ret = iio_push_event(indio_dev,
> > > +                                  IIO_MOD_EVENT_CODE(IIO_ACCEL, 0,
> > > +                                                     IIO_MOD_X_OR_Y_OR_Z,
> > > +                                                     IIO_EV_TYPE_MAG,
> > > +                                                     IIO_EV_DIR_RISING),
> > > +                                  ts);
> > > +             if (ret)
> > > +                     return ret;
> > > +     }
> > >
> > >       if (FIELD_GET(ADXL313_INT_WATERMARK, int_stat)) {
> > >               samples = adxl313_get_samples(data);
> > >               if (samples < 0)
> > >                       return samples;
> > >
> > > -             return adxl313_fifo_push(indio_dev, samples);
> > > +             ret = adxl313_fifo_push(indio_dev, samples);
> > >       }
> > >
> > >       /* Return error if no event data was pushed to the IIO channel. */
> > > -     return -ENOENT;
> > > +     return ret;  
> > This handling works, but as Andy observed maybe the comment is now confusing
> > given ret is mostly not an error.  Perhaps put that where ret is declared
> > instead, or use a separate mask check at the start to quickly
> > error out if no bits that we handle are set.  
> > >  }  
> 
> Yes. Andy also pointed out here. I already developed a feeling for
> "something's smelly" with this code, but cannot really think of a
> better approach. Actually it works, and for me it is somehow logical.
> Probably there are better ways to solve this situation in a cleaner
> way?

The check against a mask at the start is pretty common way to deal with
no status bits (that we understand) set.  Then update that mask
define as you support more bits.

That deals with the odd error case.  It is technically an additional
conditional but the compiler may squash it anyway or if on a decent CPU
it'll be a very easy to predict branch as it should never happen.

Jonathan

> 


  reply	other threads:[~2025-06-11 16:48 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-01 17:21 [PATCH v4 00/11] iio: accel: adxl313: add power-save on activity/inactivity Lothar Rubusch
2025-06-01 17:21 ` [PATCH v4 01/11] iio: accel: adxl313: add debug register Lothar Rubusch
2025-06-01 19:06   ` Andy Shevchenko
2025-06-08 15:14     ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 02/11] iio: accel: adxl313: introduce channel buffer Lothar Rubusch
2025-06-01 19:08   ` Andy Shevchenko
2025-06-11  8:01     ` Lothar Rubusch
2025-06-11  8:42       ` Andy Shevchenko
2025-06-08 15:17   ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 03/11] iio: accel: adxl313: make use of regmap cache Lothar Rubusch
2025-06-01 19:09   ` Andy Shevchenko
2025-06-08 15:22   ` Jonathan Cameron
2025-06-08 15:38     ` Jonathan Cameron
2025-06-11 13:48       ` Lothar Rubusch
2025-06-11 15:04         ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 04/11] iio: accel: adxl313: add function to enable measurement Lothar Rubusch
2025-06-01 19:12   ` Andy Shevchenko
2025-06-08 15:27   ` Jonathan Cameron
2025-06-11  8:55     ` Lothar Rubusch
2025-06-11 15:05       ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 05/11] iio: accel: adxl313: prepare interrupt handling Lothar Rubusch
2025-06-01 19:21   ` Andy Shevchenko
2025-06-11  8:26     ` Lothar Rubusch
2025-06-01 17:21 ` [PATCH v4 06/11] iio: accel: adxl313: add basic interrupt handling for FIFO watermark Lothar Rubusch
2025-06-01 19:26   ` Andy Shevchenko
2025-06-08 15:30     ` Jonathan Cameron
2025-06-08 15:44   ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 07/11] iio: accel: adxl313: add activity sensing Lothar Rubusch
2025-06-01 19:38   ` Andy Shevchenko
2025-06-11 14:49     ` Lothar Rubusch
2025-06-11 15:05       ` Andy Shevchenko
2025-06-11 15:15       ` Jonathan Cameron
2025-06-11 15:23         ` Andy Shevchenko
2025-06-08 16:08   ` Jonathan Cameron
2025-06-11 15:06     ` Lothar Rubusch
2025-06-11 16:47       ` Jonathan Cameron [this message]
2025-06-01 17:21 ` [PATCH v4 08/11] iio: accel: adxl313: add inactivity sensing Lothar Rubusch
2025-06-01 19:45   ` Andy Shevchenko
2025-06-11 15:36     ` Lothar Rubusch
2025-06-11 16:52       ` Jonathan Cameron
2025-06-08 16:14   ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 09/11] iio: accel: adxl313: implement power-save on inactivity Lothar Rubusch
2025-06-08 16:15   ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 10/11] iio: accel: adxl313: add AC coupled activity/inactivity events Lothar Rubusch
2025-06-01 19:53   ` Andy Shevchenko
2025-06-11 17:12     ` Lothar Rubusch
2025-06-08 16:23   ` Jonathan Cameron
2025-06-11 19:58     ` Lothar Rubusch
2025-06-14 13:33       ` Jonathan Cameron
2025-06-01 17:21 ` [PATCH v4 11/11] docs: iio: add ADXL313 accelerometer Lothar Rubusch
2025-06-02  1:07 ` [PATCH v4 00/11] iio: accel: adxl313: add power-save on activity/inactivity Bagas Sanjaya
2025-06-11 20:04   ` Lothar Rubusch
2025-06-12 12:41     ` Andy Shevchenko

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=20250611174751.0612dfc0@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=andy@kernel.org \
    --cc=bagasdotme@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dlechner@baylibre.com \
    --cc=l.rubusch@gmail.com \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lucas.p.stankus@gmail.com \
    --cc=nuno.sa@analog.com \
    /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