From: Jonathan Cameron <jic23@kernel.org>
To: Abhash Jha <abhashkumarjha123@gmail.com>
Cc: linux-iio@vger.kernel.org, lars@metafoo.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] iio: light: vl6180: Add configurable inter-measurement period support
Date: Sat, 5 Oct 2024 17:41:51 +0100 [thread overview]
Message-ID: <20241005174151.4bcd55f6@jic23-huawei> (raw)
In-Reply-To: <20241004150148.14033-2-abhashkumarjha123@gmail.com>
On Fri, 4 Oct 2024 20:31:46 +0530
Abhash Jha <abhashkumarjha123@gmail.com> wrote:
> Expose the IIO_CHAN_INFO_SAMP_FREQ attribute as a way to configure the
> inter-measurement period for both the IIO_DISTANCE and IIO_LIGHT
> channels. The inter-measurement period must be given in miliseconds.
Hi Abhash,
Sampling frequency must be in Hz and reflect how often the channel
is sampled (not just the inter measurement period. So this sounds wrong.
It is sometimes complex to compute but we have to stick to the documented
ABI.
Other comments inline.
Thanks
Jonathan
>
> Signed-off-by: Abhash Jha <abhashkumarjha123@gmail.com>
> @@ -412,11 +430,22 @@ static int vl6180_set_it(struct vl6180_data *data, int val, int val2)
> return ret;
> }
>
> +static int vl6180_meas_reg_val_from_ms(unsigned int period)
> +{
> + unsigned int reg_val = 0;
> +
> + if (period > 10)
> + reg_val = period < 2550 ? (DIV_ROUND_CLOSEST(period, 10) - 1) : 254;
> +
> + return reg_val;
> +}
> +
> static int vl6180_write_raw(struct iio_dev *indio_dev,
> struct iio_chan_spec const *chan,
> int val, int val2, long mask)
> {
> struct vl6180_data *data = iio_priv(indio_dev);
> + unsigned int reg_val;
>
> switch (mask) {
> case IIO_CHAN_INFO_INT_TIME:
> @@ -427,6 +456,24 @@ static int vl6180_write_raw(struct iio_dev *indio_dev,
> return -EINVAL;
>
> return vl6180_set_als_gain(data, val, val2);
> +
> + case IIO_CHAN_INFO_SAMP_FREQ:
{
needed to define scope for that guard as you probably intend.
> + guard(mutex)(&data->lock);
> + switch (chan->type) {
> + case IIO_DISTANCE:
> + data->range_meas_rate = val;
> + reg_val = vl6180_meas_reg_val_from_ms(val);
> + return vl6180_write_byte(data->client, VL6180_RANGE_INTER_MEAS_TIME, reg_val);
long lines. I don't mind going over 80 chars when readability is badly hurt, but
in this case it isn't so wrap the parameters.
> +
> + case IIO_LIGHT:
> + data->als_meas_rate = val;
> + reg_val = vl6180_meas_reg_val_from_ms(val);
> + return vl6180_write_byte(data->client, VL6180_ALS_INTER_MEAS_TIME, reg_val);
> +
> + default:
> + return -EINVAL;
> + }
> +
> default:
> return -EINVAL;
> }
> @@ -473,6 +520,22 @@ static int vl6180_init(struct vl6180_data *data)
> if (ret < 0)
> return ret;
>
> + /* Default Range inter-measurement time: 50ms
As below.
Even though you now it in advance, I'd rather you used the vl6180_meas_reg_val_from_ms()
subject to the whole thing about it needing to be in Hz
> + * reg_val = (50 / 10 - 1) = 4
> + */
> + ret = vl6180_write_byte(client, VL6180_RANGE_INTER_MEAS_TIME, 4);
> + if (ret < 0)
> + return ret;
> + data->range_meas_rate = 50;
> +
> + /* Default ALS inter-measurement time: 10ms
Multiline comment syntax in IIO (and most of the rest of the kernel)
is
/*
* Default ...
> + * reg_val = (10 / 10 - 1) = 0
> + */
> + ret = vl6180_write_byte(client, VL6180_ALS_INTER_MEAS_TIME, 0);
> + if (ret < 0)
> + return ret;
> + data->als_meas_rate = 10;
> +
> /* ALS integration time: 100ms */
> data->als_it_ms = 100;
> ret = vl6180_write_word(client, VL6180_ALS_IT, VL6180_ALS_IT_100);
next prev parent reply other threads:[~2024-10-05 16:42 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-04 15:01 [PATCH 0/3] Interrupt and Continuous mode support for VL6180 Abhash Jha
2024-10-04 15:01 ` [PATCH 1/3] iio: light: vl6180: Add configurable inter-measurement period support Abhash Jha
2024-10-05 12:25 ` kernel test robot
2024-10-05 16:41 ` Jonathan Cameron [this message]
2024-10-05 16:56 ` Abhash jha
2024-10-05 17:03 ` Jonathan Cameron
2024-10-04 15:01 ` [PATCH 2/3] iio: light: vl6180: Added Interrupt support for single shot access Abhash Jha
2024-10-05 16:47 ` Jonathan Cameron
2024-10-05 17:35 ` Abhash jha
2024-10-05 18:08 ` Jonathan Cameron
2024-10-04 15:01 ` [PATCH 3/3] iio: light: vl6180: Add support for Continuous Mode Abhash Jha
2024-10-05 16:59 ` Jonathan Cameron
2024-10-05 17:12 ` Abhash jha
2024-10-05 18:15 ` 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=20241005174151.4bcd55f6@jic23-huawei \
--to=jic23@kernel.org \
--cc=abhashkumarjha123@gmail.com \
--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