* [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes
@ 2023-01-29 13:37 Mehdi Djait
2023-01-29 13:37 ` [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table Mehdi Djait
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Mehdi Djait @ 2023-01-29 13:37 UTC (permalink / raw)
To: mazziesaccount, jic23; +Cc: linux-iio, Mehdi Djait
Two minor fixes. Swap the setting of rd_table and wr_table and remove
the g_range member.
Matti, I thought about defining an unsigned int array for the 4 possible
g ranges, setting a g_range initial value in the probe function and
updating it in the write_raw callback (case IIO_CHAN_INFO_SCALE) but
does it make sense to keep track of the g_range value ?
Mehdi Djait (2):
iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table
and wr_table
iio: accel: kionix-kx022a: Remove the unused member g_range
drivers/iio/accel/kionix-kx022a.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table
2023-01-29 13:37 [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Mehdi Djait
@ 2023-01-29 13:37 ` Mehdi Djait
2023-01-30 7:37 ` Matti Vaittinen
2023-01-29 13:37 ` [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range Mehdi Djait
2023-01-30 8:15 ` [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Matti Vaittinen
2 siblings, 1 reply; 10+ messages in thread
From: Mehdi Djait @ 2023-01-29 13:37 UTC (permalink / raw)
To: mazziesaccount, jic23; +Cc: linux-iio, Mehdi Djait
rd_table points to a regmap_access_table with valid ranges for read access
and should be set to &kx022a_ro_regs which points to the read_only regs.
The same for wr_table.
Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
---
drivers/iio/accel/kionix-kx022a.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
index f866859855cd..1d3af42ec0e1 100644
--- a/drivers/iio/accel/kionix-kx022a.c
+++ b/drivers/iio/accel/kionix-kx022a.c
@@ -142,8 +142,8 @@ const struct regmap_config kx022a_regmap = {
.reg_bits = 8,
.val_bits = 8,
.volatile_table = &kx022a_volatile_regs,
- .rd_table = &kx022a_wo_regs,
- .wr_table = &kx022a_ro_regs,
+ .rd_table = &kx022a_ro_regs,
+ .wr_table = &kx022a_wo_regs,
.rd_noinc_table = &kx022a_nir_regs,
.precious_table = &kx022a_precious_regs,
.max_register = KX022A_MAX_REGISTER,
--
2.30.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range
2023-01-29 13:37 [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Mehdi Djait
2023-01-29 13:37 ` [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table Mehdi Djait
@ 2023-01-29 13:37 ` Mehdi Djait
2023-01-30 8:17 ` Matti Vaittinen
2023-01-30 8:15 ` [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Matti Vaittinen
2 siblings, 1 reply; 10+ messages in thread
From: Mehdi Djait @ 2023-01-29 13:37 UTC (permalink / raw)
To: mazziesaccount, jic23; +Cc: linux-iio, Mehdi Djait
The g_range member of the driver data struct is not used and
should therefore be removed.
Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
---
drivers/iio/accel/kionix-kx022a.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
index 1d3af42ec0e1..bb43cb0acce4 100644
--- a/drivers/iio/accel/kionix-kx022a.c
+++ b/drivers/iio/accel/kionix-kx022a.c
@@ -162,7 +162,6 @@ struct kx022a_data {
int inc_reg;
int ien_reg;
- unsigned int g_range;
unsigned int state;
unsigned int odr_ns;
--
2.30.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table
2023-01-29 13:37 ` [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table Mehdi Djait
@ 2023-01-30 7:37 ` Matti Vaittinen
2023-01-31 19:32 ` Mehdi Djait
0 siblings, 1 reply; 10+ messages in thread
From: Matti Vaittinen @ 2023-01-30 7:37 UTC (permalink / raw)
To: Mehdi Djait, jic23; +Cc: linux-iio
Hi Mehdi,
Thank you for the patch.
On 1/29/23 15:37, Mehdi Djait wrote:
> rd_table points to a regmap_access_table with valid ranges for read access
> and should be set to &kx022a_ro_regs which points to the read_only regs.
> The same for wr_table.
>
> Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
> ---
> drivers/iio/accel/kionix-kx022a.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
> index f866859855cd..1d3af42ec0e1 100644
> --- a/drivers/iio/accel/kionix-kx022a.c
> +++ b/drivers/iio/accel/kionix-kx022a.c
> @@ -142,8 +142,8 @@ const struct regmap_config kx022a_regmap = {
> .reg_bits = 8,
> .val_bits = 8,
> .volatile_table = &kx022a_volatile_regs,
> - .rd_table = &kx022a_wo_regs,
> - .wr_table = &kx022a_ro_regs,
> + .rd_table = &kx022a_ro_regs,
> + .wr_table = &kx022a_wo_regs,
Have you tested this? If I interpret the code correctly, the current
code (before this patch) adds read-only registers - Eg, registers which
are not writable - to wr_table no-range. I think it is correct way. Same
for write-only registers - eg, registers which are not readable - are
stored in rd-table no-range. Do you think I am misunderstanding something?
> .rd_noinc_table = &kx022a_nir_regs,
> .precious_table = &kx022a_precious_regs,
> .max_register = KX022A_MAX_REGISTER,
Best Regards
-- Matti
--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland
~~ When things go utterly wrong vim users can always type :help! ~~
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes
2023-01-29 13:37 [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Mehdi Djait
2023-01-29 13:37 ` [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table Mehdi Djait
2023-01-29 13:37 ` [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range Mehdi Djait
@ 2023-01-30 8:15 ` Matti Vaittinen
2023-01-31 19:48 ` Mehdi Djait
2 siblings, 1 reply; 10+ messages in thread
From: Matti Vaittinen @ 2023-01-30 8:15 UTC (permalink / raw)
To: Mehdi Djait, jic23; +Cc: linux-iio
Hi Mehdi,
On 1/29/23 15:37, Mehdi Djait wrote:
> Two minor fixes. Swap the setting of rd_table and wr_table and remove
> the g_range member.
>
> Matti, I thought about defining an unsigned int array for the 4 possible
> g ranges, setting a g_range initial value in the probe function and
> updating it in the write_raw callback (case IIO_CHAN_INFO_SCALE)
How would it differ from current write_raw behaviour (below)?
[mvaittin@dc75zzyyyyyyyyyyyyycy-3 linux]$ grep -A70 write_raw
drivers/iio/accel/kionix-kx022a.c
static int kx022a_write_raw(struct iio_dev *idev,
struct iio_chan_spec const *chan,
int val, int val2, long mask)
{
struct kx022a_data *data = iio_priv(idev);
int ret, n;
/*
* We should not allow changing scale or frequency when FIFO is running
* as it will mess the timestamp/scale for samples existing in the
* buffer. If this turns out to be an issue we can later change logic
* to internally flush the fifo before reconfiguring so the samples in
* fifo keep matching the freq/scale settings. (Such setup could cause
* issues if users trust the watermark to be reached within known
* time-limit).
*/
ret = iio_device_claim_direct_mode(idev);
if (ret)
return ret;
switch (mask) {
//snip
case IIO_CHAN_INFO_SCALE:
n = ARRAY_SIZE(kx022a_scale_table);
while (n-- > 0)
if (val == kx022a_scale_table[n][0] &&
val2 == kx022a_scale_table[n][1])
break;
if (n < 0) {
ret = -EINVAL;
goto unlock_out;
}
ret = kx022a_turn_off_lock(data);
if (ret)
break;
ret = regmap_update_bits(data->regmap, KX022A_REG_CNTL,
KX022A_MASK_GSEL,
n << KX022A_GSEL_SHIFT);
kx022a_turn_on_unlock(data);
break;
//snip
but
> does it make sense to keep track of the g_range value ?
Do you mean caching the g_range instead of retrieving it from the
hardware? I don't know an use-case where reading the range would be
time-critical - and even if it was, the regmap should cache the value
anyways. (unless KX022A_REG_CNTL is in volatile range). So no, I don't
think caching the g_range is worth it.
Yours,
-- Matti
--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland
~~ When things go utterly wrong vim users can always type :help! ~~
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range
2023-01-29 13:37 ` [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range Mehdi Djait
@ 2023-01-30 8:17 ` Matti Vaittinen
2023-02-05 14:56 ` Jonathan Cameron
0 siblings, 1 reply; 10+ messages in thread
From: Matti Vaittinen @ 2023-01-30 8:17 UTC (permalink / raw)
To: Mehdi Djait, jic23; +Cc: linux-iio
On 1/29/23 15:37, Mehdi Djait wrote:
> The g_range member of the driver data struct is not used and
> should therefore be removed
Well spotted, thanks.
>
> Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
> ---
> drivers/iio/accel/kionix-kx022a.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
> index 1d3af42ec0e1..bb43cb0acce4 100644
> --- a/drivers/iio/accel/kionix-kx022a.c
> +++ b/drivers/iio/accel/kionix-kx022a.c
> @@ -162,7 +162,6 @@ struct kx022a_data {
> int inc_reg;
> int ien_reg;
>
> - unsigned int g_range;
> unsigned int state;
> unsigned int odr_ns;
>
--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland
~~ When things go utterly wrong vim users can always type :help! ~~
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table
2023-01-30 7:37 ` Matti Vaittinen
@ 2023-01-31 19:32 ` Mehdi Djait
0 siblings, 0 replies; 10+ messages in thread
From: Mehdi Djait @ 2023-01-31 19:32 UTC (permalink / raw)
To: Matti Vaittinen, jic23; +Cc: linux-iio
Hi Matti,
On Mon, Jan 30, 2023 at 09:37:12AM +0200, Matti Vaittinen wrote:
> Hi Mehdi,
>
> Thank you for the patch.
>
> On 1/29/23 15:37, Mehdi Djait wrote:
> > rd_table points to a regmap_access_table with valid ranges for read access
> > and should be set to &kx022a_ro_regs which points to the read_only regs.
> > The same for wr_table.
> >
> > Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
> > ---
> > drivers/iio/accel/kionix-kx022a.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
> > index f866859855cd..1d3af42ec0e1 100644
> > --- a/drivers/iio/accel/kionix-kx022a.c
> > +++ b/drivers/iio/accel/kionix-kx022a.c
> > @@ -142,8 +142,8 @@ const struct regmap_config kx022a_regmap = {
> > .reg_bits = 8,
> > .val_bits = 8,
> > .volatile_table = &kx022a_volatile_regs,
> > - .rd_table = &kx022a_wo_regs,
> > - .wr_table = &kx022a_ro_regs,
> > + .rd_table = &kx022a_ro_regs,
> > + .wr_table = &kx022a_wo_regs,
>
> Have you tested this? If I interpret the code correctly, the current code
> (before this patch) adds read-only registers - Eg, registers which are not
> writable - to wr_table no-range. I think it is correct way. Same for
> write-only registers - eg, registers which are not readable - are stored in
> rd-table no-range. Do you think I am misunderstanding something?
>
I am the person totally misunderstanding everything here (which is
expected). I was confused by the assignment of write_only_regs to
readable_table and read_only_regs to writeable_table, it's not an excuse I
should have verified more before sending a patch.
--
Best Regards,
Mehdi Djait
> > .rd_noinc_table = &kx022a_nir_regs,
> > .precious_table = &kx022a_precious_regs,
> > .max_register = KX022A_MAX_REGISTER,
>
> Best Regards
> -- Matti
>
> --
> Matti Vaittinen
> Linux kernel developer at ROHM Semiconductors
> Oulu Finland
>
> ~~ When things go utterly wrong vim users can always type :help! ~~
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes
2023-01-30 8:15 ` [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Matti Vaittinen
@ 2023-01-31 19:48 ` Mehdi Djait
2023-02-01 5:36 ` Matti Vaittinen
0 siblings, 1 reply; 10+ messages in thread
From: Mehdi Djait @ 2023-01-31 19:48 UTC (permalink / raw)
To: Matti Vaittinen, jic23; +Cc: linux-iio
Hi Matti,
On Mon, Jan 30, 2023 at 10:15:51AM +0200, Matti Vaittinen wrote:
> Hi Mehdi,
>
> On 1/29/23 15:37, Mehdi Djait wrote:
> > Two minor fixes. Swap the setting of rd_table and wr_table and remove
> > the g_range member.
> >
> > Matti, I thought about defining an unsigned int array for the 4 possible
> > g ranges, setting a g_range initial value in the probe function and
> > updating it in the write_raw callback (case IIO_CHAN_INFO_SCALE)
>
> How would it differ from current write_raw behaviour (below)?
>
> [mvaittin@dc75zzyyyyyyyyyyyyycy-3 linux]$ grep -A70 write_raw
> drivers/iio/accel/kionix-kx022a.c
> static int kx022a_write_raw(struct iio_dev *idev,
> struct iio_chan_spec const *chan,
> int val, int val2, long mask)
> {
> struct kx022a_data *data = iio_priv(idev);
> int ret, n;
>
> /*
> * We should not allow changing scale or frequency when FIFO is running
> * as it will mess the timestamp/scale for samples existing in the
> * buffer. If this turns out to be an issue we can later change logic
> * to internally flush the fifo before reconfiguring so the samples in
> * fifo keep matching the freq/scale settings. (Such setup could cause
> * issues if users trust the watermark to be reached within known
> * time-limit).
> */
> ret = iio_device_claim_direct_mode(idev);
> if (ret)
> return ret;
>
> switch (mask) {
>
> //snip
>
> case IIO_CHAN_INFO_SCALE:
> n = ARRAY_SIZE(kx022a_scale_table);
>
> while (n-- > 0)
> if (val == kx022a_scale_table[n][0] &&
> val2 == kx022a_scale_table[n][1])
> break;
> if (n < 0) {
> ret = -EINVAL;
> goto unlock_out;
> }
>
> ret = kx022a_turn_off_lock(data);
> if (ret)
> break;
>
> ret = regmap_update_bits(data->regmap, KX022A_REG_CNTL,
> KX022A_MASK_GSEL,
> n << KX022A_GSEL_SHIFT);
/*
* The only difference would be to store the g_range value in the
* driver private struct when the user changes it from sysfs
* (in this case I defined an array called kx022a_g_range_table)
*/
data->g_range = kx022a_g_range_table[n];
> kx022a_turn_on_unlock(data);
> break;
> //snip
>
>
> but
> > does it make sense to keep track of the g_range value ?
>
> Do you mean caching the g_range instead of retrieving it from the hardware?
> I don't know an use-case where reading the range would be time-critical -
> and even if it was, the regmap should cache the value anyways. (unless
> KX022A_REG_CNTL is in volatile range). So no, I don't think caching the
> g_range is worth it.
>
> Yours,
> -- Matti
>
> --
> Matti Vaittinen
> Linux kernel developer at ROHM Semiconductors
> Oulu Finland
>
> ~~ When things go utterly wrong vim users can always type :help! ~~
>
--
Best Regards,
Mehdi Djait
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes
2023-01-31 19:48 ` Mehdi Djait
@ 2023-02-01 5:36 ` Matti Vaittinen
0 siblings, 0 replies; 10+ messages in thread
From: Matti Vaittinen @ 2023-02-01 5:36 UTC (permalink / raw)
To: Mehdi Djait, jic23; +Cc: linux-iio
On 1/31/23 21:48, Mehdi Djait wrote:
> Hi Matti,
>
> On Mon, Jan 30, 2023 at 10:15:51AM +0200, Matti Vaittinen wrote:
>> On 1/29/23 15:37, Mehdi Djait wrote:
>
> /*
> * The only difference would be to store the g_range value in the
> * driver private struct when the user changes it from sysfs
> * (in this case I defined an array called kx022a_g_range_table)
> */
>
> data->g_range = kx022a_g_range_table[n];
>
Ok. Thanks for the clarification. In that case, as I mentioned below:
>> Do you mean caching the g_range instead of retrieving it from the
hardware?
>> I don't know an use-case where reading the range would be
time-critical -
>> and even if it was, the regmap should cache the value anyways. (unless
>> KX022A_REG_CNTL is in volatile range). So no, I don't think caching the
>> g_range is worth it.
I don't think it makes much difference. The regmap should cache the
value anyways. So, to be honest, I don't think it's worth the space and
code - unless the GSEL reg was in volatile range for some reason - and
even in that case the benefit might not be so big because AFAIR, the
g-range is not read for every sample.
Yours,
-- Matti
--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland
~~ When things go utterly wrong vim users can always type :help! ~~
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range
2023-01-30 8:17 ` Matti Vaittinen
@ 2023-02-05 14:56 ` Jonathan Cameron
0 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2023-02-05 14:56 UTC (permalink / raw)
To: Matti Vaittinen; +Cc: Mehdi Djait, linux-iio
On Mon, 30 Jan 2023 10:17:00 +0200
Matti Vaittinen <mazziesaccount@gmail.com> wrote:
> On 1/29/23 15:37, Mehdi Djait wrote:
> > The g_range member of the driver data struct is not used and
> > should therefore be removed
>
> Well spotted, thanks.
>
> >
> > Signed-off-by: Mehdi Djait <mehdi.djait.k@gmail.com>
> Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Applied
>
> > ---
> > drivers/iio/accel/kionix-kx022a.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c
> > index 1d3af42ec0e1..bb43cb0acce4 100644
> > --- a/drivers/iio/accel/kionix-kx022a.c
> > +++ b/drivers/iio/accel/kionix-kx022a.c
> > @@ -162,7 +162,6 @@ struct kx022a_data {
> > int inc_reg;
> > int ien_reg;
> >
> > - unsigned int g_range;
> > unsigned int state;
> > unsigned int odr_ns;
> >
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-02-05 14:42 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-29 13:37 [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Mehdi Djait
2023-01-29 13:37 ` [PATCH 1/2] iio: accel: kionix-kx022a: Fix the setting of regmap_config rd_table and wr_table Mehdi Djait
2023-01-30 7:37 ` Matti Vaittinen
2023-01-31 19:32 ` Mehdi Djait
2023-01-29 13:37 ` [PATCH 2/2] iio: accel: kionix-kx022a: Remove the unused member g_range Mehdi Djait
2023-01-30 8:17 ` Matti Vaittinen
2023-02-05 14:56 ` Jonathan Cameron
2023-01-30 8:15 ` [PATCH 0/2] iio: accel: kionix-kx022a: Minor fixes Matti Vaittinen
2023-01-31 19:48 ` Mehdi Djait
2023-02-01 5:36 ` Matti Vaittinen
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.