All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gwendal Grignou <gwendal@chromium.org>
To: Jonathan Cameron <jic23@kernel.org>
Cc: Brian Norris <briannorris@chromium.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	Lee Jones <lee.jones@linaro.org>,
	Benson Leung <bleung@chromium.org>,
	Enric Balletbo i Serra <enric.balletbo@collabora.com>,
	Doug Anderson <dianders@chromium.org>,
	Guenter Roeck <groeck@chromium.org>,
	Fabien Lahoudere <fabien.lahoudere@collabora.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-iio <linux-iio@vger.kernel.org>
Subject: Re: [PATCH v2 18/18] iio: cros_ec: Use Hertz as unit for sampling frequency
Date: Tue, 22 Oct 2019 12:11:45 -0700	[thread overview]
Message-ID: <CAPUE2uvu6jMPkF=oX4hyaiLHti9_YjOJ=Nq+GWQp9cgqUNjs9Q@mail.gmail.com> (raw)
In-Reply-To: <20191021174507.72f2b777@archlinux>

On Mon, Oct 21, 2019 at 9:45 AM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Sun, 20 Oct 2019 22:54:03 -0700
> Gwendal Grignou <gwendal@chromium.org> wrote:
>
> > To be compliant with other sensors, set and get sensor sampling
> > frequency in Hz, not mHz.
> >
> > Fixes: ae7b02ad2f32 ("iio: common: cros_ec_sensors: Expose
> > cros_ec_sensors frequency range via iio sysfs")
> >
> > Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
>
> Do we need to look at back porting this?
>
> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>
> Not sure which path this set will take in, hence I've given
> acks for various patches incase it's not via me.
>
> Whole set is in general good to have, but I do worry a bit about
> people noticing ABI breakage. *crosses fingers*
I am planning to backport the sysfs change to older kernel.
I am adding some code to the clients that use the sysfs interface: if
frequency is absent, assume sample_frequency is the new frequency.
Clients should be able to handle both ABI, the code has been around
since 3.14.

>
> Jonathan
>
> > ---
> > No changes in v2.
> >
> >  .../cros_ec_sensors/cros_ec_sensors_core.c    | 32 +++++++++++--------
> >  .../linux/iio/common/cros_ec_sensors_core.h   |  6 ++--
> >  2 files changed, 22 insertions(+), 16 deletions(-)
> >
> > diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > index f50e239f9a1e9..76dc8cad1b4b5 100644
> > --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > @@ -256,6 +256,7 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
> >       struct cros_ec_dev *ec = sensor_hub->ec;
> >       struct cros_ec_sensor_platform *sensor_platform = dev_get_platdata(dev);
> >       u32 ver_mask;
> > +     int frequencies[ARRAY_SIZE(state->frequencies) / 2] = { 0 };
> >       int ret, i;
> >
> >       platform_set_drvdata(pdev, indio_dev);
> > @@ -304,20 +305,22 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
> >                       state->calib[i].scale = MOTION_SENSE_DEFAULT_SCALE;
> >
> >               /* 0 is a correct value used to stop the device */
> > -             state->frequencies[0] = 0;
> >               if (state->msg->version < 3) {
> >                       get_default_min_max_freq(state->resp->info.type,
> > -                                              &state->frequencies[1],
> > -                                              &state->frequencies[2],
> > +                                              &frequencies[1],
> > +                                              &frequencies[2],
> >                                                &state->fifo_max_event_count);
> >               } else {
> > -                     state->frequencies[1] =
> > -                         state->resp->info_3.min_frequency;
> > -                     state->frequencies[2] =
> > -                         state->resp->info_3.max_frequency;
> > +                     frequencies[1] = state->resp->info_3.min_frequency;
> > +                     frequencies[2] = state->resp->info_3.max_frequency;
> >                       state->fifo_max_event_count =
> >                           state->resp->info_3.fifo_max_event_count;
> >               }
> > +             for (i = 0; i < ARRAY_SIZE(frequencies); i++) {
> > +                     state->frequencies[2 * i] = frequencies[i] / 1000;
> > +                     state->frequencies[2 * i + 1] =
> > +                             (frequencies[i] % 1000) * 1000;
> > +             }
> >
> >               ret = devm_iio_triggered_buffer_setup(
> >                               dev, indio_dev, NULL,
> > @@ -707,7 +710,7 @@ int cros_ec_sensors_core_read(struct cros_ec_sensors_core_state *st,
> >                         struct iio_chan_spec const *chan,
> >                         int *val, int *val2, long mask)
> >  {
> > -     int ret;
> > +     int ret, frequency;
> >
> >       switch (mask) {
> >       case IIO_CHAN_INFO_SAMP_FREQ:
> > @@ -719,8 +722,10 @@ int cros_ec_sensors_core_read(struct cros_ec_sensors_core_state *st,
> >               if (ret)
> >                       break;
> >
> > -             *val = st->resp->sensor_odr.ret;
> > -             ret = IIO_VAL_INT;
> > +             frequency = st->resp->sensor_odr.ret;
> > +             *val = frequency / 1000;
> > +             *val2 = (frequency % 1000) * 1000;
> > +             ret = IIO_VAL_INT_PLUS_MICRO;
> >               break;
> >       default:
> >               ret = -EINVAL;
> > @@ -755,7 +760,7 @@ int cros_ec_sensors_core_read_avail(struct iio_dev *indio_dev,
> >       case IIO_CHAN_INFO_SAMP_FREQ:
> >               *length = ARRAY_SIZE(state->frequencies);
> >               *vals = (const int *)&state->frequencies;
> > -             *type = IIO_VAL_INT;
> > +             *type = IIO_VAL_INT_PLUS_MICRO;
> >               return IIO_AVAIL_LIST;
> >       }
> >
> > @@ -777,12 +782,13 @@ int cros_ec_sensors_core_write(struct cros_ec_sensors_core_state *st,
> >                              struct iio_chan_spec const *chan,
> >                              int val, int val2, long mask)
> >  {
> > -     int ret;
> > +     int ret, frequency;
> >
> >       switch (mask) {
> >       case IIO_CHAN_INFO_SAMP_FREQ:
> > +             frequency = val * 1000 + val2 / 1000;
> >               st->param.cmd = MOTIONSENSE_CMD_SENSOR_ODR;
> > -             st->param.sensor_odr.data = val;
> > +             st->param.sensor_odr.data = frequency;
> >
> >               /* Always roundup, so caller gets at least what it asks for. */
> >               st->param.sensor_odr.roundup = 1;
> > diff --git a/include/linux/iio/common/cros_ec_sensors_core.h b/include/linux/iio/common/cros_ec_sensors_core.h
> > index 4df3abd151fbf..256447b136296 100644
> > --- a/include/linux/iio/common/cros_ec_sensors_core.h
> > +++ b/include/linux/iio/common/cros_ec_sensors_core.h
> > @@ -52,6 +52,8 @@ typedef irqreturn_t (*cros_ec_sensors_capture_t)(int irq, void *p);
> >   *                           is always 8-byte aligned.
> >   * @read_ec_sensors_data:    function used for accessing sensors values
> >   * @fifo_max_event_count:    Size of the EC sensor FIFO
> > + * @frequencies:             Table of known available frequencies:
> > + *                           0, Min and Max in mHz.
> >   */
> >  struct cros_ec_sensors_core_state {
> >       struct cros_ec_device *ec;
> > @@ -75,9 +77,7 @@ struct cros_ec_sensors_core_state {
> >                                   unsigned long scan_mask, s16 *data);
> >
> >       u32 fifo_max_event_count;
> > -
> > -     /* Table of known available frequencies : 0, Min and Max in mHz */
> > -     int frequencies[3];
> > +     int frequencies[6];
> >  };
> >
> >  int cros_ec_sensors_read_lpc(struct iio_dev *indio_dev, unsigned long scan_mask,
>

  reply	other threads:[~2019-10-22 19:11 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-21  5:53 [PATCH v2 00/18] cros_ec: Add sensorhub driver and FIFO processing*** SUBJECT HERE Gwendal Grignou
2019-10-21  5:53 ` [PATCH v2 01/18] platform: chrome: Put docs with the code Gwendal Grignou
2019-10-21 15:31   ` Jonathan Cameron
2019-10-24 17:03     ` Enric Balletbo i Serra
2019-10-21  5:53 ` [PATCH v2 02/18] mfd: cros_ec: Add sensor_count and make check_features public Gwendal Grignou
2019-10-21 15:12   ` Enric Balletbo i Serra
2019-10-21 15:49   ` Jonathan Cameron
2019-11-01  9:00   ` Lee Jones
2019-10-21  5:53 ` [PATCH v2 03/18] platform: cros_ec: Add cros_ec_sensor_hub driver Gwendal Grignou
2019-10-21 15:59   ` Jonathan Cameron
2019-10-22  8:32     ` Enric Balletbo i Serra
2019-10-21  5:53 ` [PATCH v2 04/18] platform/mfd:iio: cros_ec: Register sensor through sensorhub Gwendal Grignou
2019-10-21 16:00   ` Jonathan Cameron
2019-10-22  9:39     ` Enric Balletbo i Serra
2019-10-21  5:53 ` [PATCH v2 05/18] platform: chrome: cros-ec: record event timestamp in the hard irq Gwendal Grignou
2019-10-22 10:03   ` Enric Balletbo i Serra
2019-10-21  5:53 ` [PATCH v2 06/18] platform: chrome: cros_ec: Do not attempt to register a non-positive IRQ number Gwendal Grignou
2019-10-22 10:05   ` Enric Balletbo i Serra
2019-10-21  5:53 ` [PATCH v2 07/18] platform: chrome: cros_ec: handle MKBP more events flag Gwendal Grignou
2019-10-21 16:07   ` Jonathan Cameron
2019-10-21  5:53 ` [PATCH v2 08/18] Revert "Input: cros_ec_keyb - add back missing mask for event_type" Gwendal Grignou
2019-10-21  5:53 ` [PATCH v2 09/18] Revert "Input: cros_ec_keyb: mask out extra flags in event_type" Gwendal Grignou
2019-10-21  5:53 ` [PATCH v2 10/18] platform: chrome: sensorhub: Add FIFO support Gwendal Grignou
2019-10-21 16:27   ` Jonathan Cameron
2019-10-21 22:09     ` Gwendal Grignou
2019-10-22 10:42       ` Jonathan Cameron
2019-10-21  5:53 ` [PATCH v2 11/18] platform: chrome: sensorhub: Add code to spread timestmap Gwendal Grignou
2019-10-21  5:53 ` [PATCH v2 12/18] platform: chrome: sensorhub: Add median filter Gwendal Grignou
2019-10-21  5:53 ` [PATCH v2 13/18] iio: cros_ec: Move function description to .c file Gwendal Grignou
2019-10-21 16:33   ` Jonathan Cameron
2019-10-21  5:53 ` [PATCH v2 14/18] iio: cros_ec: Register to cros_ec_sensorhub when EC supports FIFO Gwendal Grignou
2019-10-21 16:38   ` Jonathan Cameron
2019-10-21  5:54 ` [PATCH v2 15/18] iio: cros_ec: Remove pm function Gwendal Grignou
2019-10-21 16:39   ` Jonathan Cameron
2019-10-21  5:54 ` [PATCH v2 16/18] iio: cros_ec: Expose hwfifo_timeout Gwendal Grignou
2019-10-21 16:42   ` Jonathan Cameron
2019-10-21  5:54 ` [PATCH v2 17/18] iio: cros_ec: Report hwfifo_watermark_max Gwendal Grignou
2019-10-21 16:42   ` Jonathan Cameron
2019-10-21  5:54 ` [PATCH v2 18/18] iio: cros_ec: Use Hertz as unit for sampling frequency Gwendal Grignou
2019-10-21 16:45   ` Jonathan Cameron
2019-10-22 19:11     ` Gwendal Grignou [this message]
2019-10-21 15:29 ` [PATCH v2 00/18] cros_ec: Add sensorhub driver and FIFO processing*** SUBJECT HERE Jonathan Cameron

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='CAPUE2uvu6jMPkF=oX4hyaiLHti9_YjOJ=Nq+GWQp9cgqUNjs9Q@mail.gmail.com' \
    --to=gwendal@chromium.org \
    --cc=bleung@chromium.org \
    --cc=briannorris@chromium.org \
    --cc=dianders@chromium.org \
    --cc=enric.balletbo@collabora.com \
    --cc=fabien.lahoudere@collabora.com \
    --cc=groeck@chromium.org \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=lee.jones@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.