Rework controlling measurement and standby of the sensor. Therefore,
replace writing the register directly by encapsulating this and dealing
with the return value in a separte function to enable and disable
measurement. This will help to avoid redundant code in all locations
where the sensor configuration needs to be adjusted, thus measurement will
be set to standby, in follow up patches.
Further, reduce the control mask to only the measurement bit. The sleep bit
actually controls a different behavior (not just putting the sensor to
standby for configuration, but turning it into sleep mode) and it is not
used so far. In consequence, there is no need to cover sleep bit and
measurement with the same mask.
Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
---
drivers/iio/accel/adxl313.h | 3 +--
drivers/iio/accel/adxl313_core.c | 10 +++++++---
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/accel/adxl313.h b/drivers/iio/accel/adxl313.h
index fc937bdf83b6..9bf2facdbf87 100644
--- a/drivers/iio/accel/adxl313.h
+++ b/drivers/iio/accel/adxl313.h
@@ -36,8 +36,7 @@
#define ADXL313_RATE_MSK GENMASK(3, 0)
#define ADXL313_RATE_BASE 6
-#define ADXL313_POWER_CTL_MSK GENMASK(3, 2)
-#define ADXL313_MEASUREMENT_MODE BIT(3)
+#define ADXL313_POWER_CTL_MSK BIT(3)
#define ADXL313_RANGE_MSK GENMASK(1, 0)
#define ADXL313_RANGE_MAX 3
diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adxl313_core.c
index 0c893c286017..6170c9daa30f 100644
--- a/drivers/iio/accel/adxl313_core.c
+++ b/drivers/iio/accel/adxl313_core.c
@@ -63,6 +63,12 @@ bool adxl313_is_volatile_reg(struct device *dev, unsigned int reg)
}
EXPORT_SYMBOL_NS_GPL(adxl313_is_volatile_reg, "IIO_ADXL313");
+static int adxl313_set_measure_en(struct adxl313_data *data, bool en)
+{
+ return regmap_assign_bits(data->regmap, ADXL313_REG_POWER_CTL,
+ ADXL313_POWER_CTL_MSK, en);
+}
+
static int adxl312_check_id(struct device *dev,
struct adxl313_data *data)
{
@@ -410,9 +416,7 @@ static int adxl313_setup(struct device *dev, struct adxl313_data *data,
}
/* Enables measurement mode */
- return regmap_update_bits(data->regmap, ADXL313_REG_POWER_CTL,
- ADXL313_POWER_CTL_MSK,
- ADXL313_MEASUREMENT_MODE);
+ return adxl313_set_measure_en(data, true);
}
/**
--
2.39.5
On Sun, 1 Jun 2025 17:21:32 +0000
Lothar Rubusch <l.rubusch@gmail.com> wrote:
> Rework controlling measurement and standby of the sensor. Therefore,
> replace writing the register directly by encapsulating this and dealing
> with the return value in a separte function to enable and disable
> measurement. This will help to avoid redundant code in all locations
> where the sensor configuration needs to be adjusted, thus measurement will
> be set to standby, in follow up patches.
>
> Further, reduce the control mask to only the measurement bit. The sleep bit
> actually controls a different behavior (not just putting the sensor to
> standby for configuration, but turning it into sleep mode) and it is not
> used so far. In consequence, there is no need to cover sleep bit and
> measurement with the same mask.
>
> Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
This is a good bit to have as a precursor patch (as you have done)
because it is refactoring the existing code. It doesn't stand on it's
own though given for now there is only one caller, so I won't pick it up
until the patch that uses it is ready to go.
Jonathan
> ---
> drivers/iio/accel/adxl313.h | 3 +--
> drivers/iio/accel/adxl313_core.c | 10 +++++++---
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/accel/adxl313.h b/drivers/iio/accel/adxl313.h
> index fc937bdf83b6..9bf2facdbf87 100644
> --- a/drivers/iio/accel/adxl313.h
> +++ b/drivers/iio/accel/adxl313.h
> @@ -36,8 +36,7 @@
> #define ADXL313_RATE_MSK GENMASK(3, 0)
> #define ADXL313_RATE_BASE 6
>
> -#define ADXL313_POWER_CTL_MSK GENMASK(3, 2)
> -#define ADXL313_MEASUREMENT_MODE BIT(3)
> +#define ADXL313_POWER_CTL_MSK BIT(3)
>
> #define ADXL313_RANGE_MSK GENMASK(1, 0)
> #define ADXL313_RANGE_MAX 3
> diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adxl313_core.c
> index 0c893c286017..6170c9daa30f 100644
> --- a/drivers/iio/accel/adxl313_core.c
> +++ b/drivers/iio/accel/adxl313_core.c
> @@ -63,6 +63,12 @@ bool adxl313_is_volatile_reg(struct device *dev, unsigned int reg)
> }
> EXPORT_SYMBOL_NS_GPL(adxl313_is_volatile_reg, "IIO_ADXL313");
>
> +static int adxl313_set_measure_en(struct adxl313_data *data, bool en)
> +{
> + return regmap_assign_bits(data->regmap, ADXL313_REG_POWER_CTL,
> + ADXL313_POWER_CTL_MSK, en);
> +}
> +
> static int adxl312_check_id(struct device *dev,
> struct adxl313_data *data)
> {
> @@ -410,9 +416,7 @@ static int adxl313_setup(struct device *dev, struct adxl313_data *data,
> }
>
> /* Enables measurement mode */
> - return regmap_update_bits(data->regmap, ADXL313_REG_POWER_CTL,
> - ADXL313_POWER_CTL_MSK,
> - ADXL313_MEASUREMENT_MODE);
> + return adxl313_set_measure_en(data, true);
> }
>
> /**
On Sun, Jun 8, 2025 at 5:27 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Sun, 1 Jun 2025 17:21:32 +0000
> Lothar Rubusch <l.rubusch@gmail.com> wrote:
>
> > Rework controlling measurement and standby of the sensor. Therefore,
> > replace writing the register directly by encapsulating this and dealing
> > with the return value in a separte function to enable and disable
> > measurement. This will help to avoid redundant code in all locations
> > where the sensor configuration needs to be adjusted, thus measurement will
> > be set to standby, in follow up patches.
> >
> > Further, reduce the control mask to only the measurement bit. The sleep bit
> > actually controls a different behavior (not just putting the sensor to
> > standby for configuration, but turning it into sleep mode) and it is not
> > used so far. In consequence, there is no need to cover sleep bit and
> > measurement with the same mask.
> >
> > Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
> This is a good bit to have as a precursor patch (as you have done)
> because it is refactoring the existing code. It doesn't stand on it's
> own though given for now there is only one caller, so I won't pick it up
> until the patch that uses it is ready to go.
>
So, I'll leave this patch (in case I might refrase the commit message,
and I hope this is ok). I'm going to merge [v4 02/11] [v4 05/11] and
[v4 06/11] for a v5. Let me know if I got this wrong.
> Jonathan
>
> > ---
> > drivers/iio/accel/adxl313.h | 3 +--
> > drivers/iio/accel/adxl313_core.c | 10 +++++++---
> > 2 files changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/iio/accel/adxl313.h b/drivers/iio/accel/adxl313.h
> > index fc937bdf83b6..9bf2facdbf87 100644
> > --- a/drivers/iio/accel/adxl313.h
> > +++ b/drivers/iio/accel/adxl313.h
> > @@ -36,8 +36,7 @@
> > #define ADXL313_RATE_MSK GENMASK(3, 0)
> > #define ADXL313_RATE_BASE 6
> >
> > -#define ADXL313_POWER_CTL_MSK GENMASK(3, 2)
> > -#define ADXL313_MEASUREMENT_MODE BIT(3)
> > +#define ADXL313_POWER_CTL_MSK BIT(3)
> >
> > #define ADXL313_RANGE_MSK GENMASK(1, 0)
> > #define ADXL313_RANGE_MAX 3
> > diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adxl313_core.c
> > index 0c893c286017..6170c9daa30f 100644
> > --- a/drivers/iio/accel/adxl313_core.c
> > +++ b/drivers/iio/accel/adxl313_core.c
> > @@ -63,6 +63,12 @@ bool adxl313_is_volatile_reg(struct device *dev, unsigned int reg)
> > }
> > EXPORT_SYMBOL_NS_GPL(adxl313_is_volatile_reg, "IIO_ADXL313");
> >
> > +static int adxl313_set_measure_en(struct adxl313_data *data, bool en)
> > +{
> > + return regmap_assign_bits(data->regmap, ADXL313_REG_POWER_CTL,
> > + ADXL313_POWER_CTL_MSK, en);
> > +}
> > +
> > static int adxl312_check_id(struct device *dev,
> > struct adxl313_data *data)
> > {
> > @@ -410,9 +416,7 @@ static int adxl313_setup(struct device *dev, struct adxl313_data *data,
> > }
> >
> > /* Enables measurement mode */
> > - return regmap_update_bits(data->regmap, ADXL313_REG_POWER_CTL,
> > - ADXL313_POWER_CTL_MSK,
> > - ADXL313_MEASUREMENT_MODE);
> > + return adxl313_set_measure_en(data, true);
> > }
> >
> > /**
>
On Wed, 11 Jun 2025 10:55:26 +0200 Lothar Rubusch <l.rubusch@gmail.com> wrote: > On Sun, Jun 8, 2025 at 5:27 PM Jonathan Cameron <jic23@kernel.org> wrote: > > > > On Sun, 1 Jun 2025 17:21:32 +0000 > > Lothar Rubusch <l.rubusch@gmail.com> wrote: > > > > > Rework controlling measurement and standby of the sensor. Therefore, > > > replace writing the register directly by encapsulating this and dealing > > > with the return value in a separte function to enable and disable > > > measurement. This will help to avoid redundant code in all locations > > > where the sensor configuration needs to be adjusted, thus measurement will > > > be set to standby, in follow up patches. > > > > > > Further, reduce the control mask to only the measurement bit. The sleep bit > > > actually controls a different behavior (not just putting the sensor to > > > standby for configuration, but turning it into sleep mode) and it is not > > > used so far. In consequence, there is no need to cover sleep bit and > > > measurement with the same mask. > > > > > > Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com> > > This is a good bit to have as a precursor patch (as you have done) > > because it is refactoring the existing code. It doesn't stand on it's > > own though given for now there is only one caller, so I won't pick it up > > until the patch that uses it is ready to go. > > > > So, I'll leave this patch (in case I might refrase the commit message, > and I hope this is ok). I'm going to merge [v4 02/11] [v4 05/11] and > [v4 06/11] for a v5. Let me know if I got this wrong. > Sounds good to me. J
On Sun, Jun 1, 2025 at 8:21 PM Lothar Rubusch <l.rubusch@gmail.com> wrote: > > Rework controlling measurement and standby of the sensor. Therefore, > replace writing the register directly by encapsulating this and dealing > with the return value in a separte function to enable and disable separate (Please, go with a spell check before sending a new version) > measurement. This will help to avoid redundant code in all locations > where the sensor configuration needs to be adjusted, thus measurement will > be set to standby, in follow up patches. > > Further, reduce the control mask to only the measurement bit. The sleep bit > actually controls a different behavior (not just putting the sensor to > standby for configuration, but turning it into sleep mode) and it is not > used so far. In consequence, there is no need to cover sleep bit and cover the sleep > measurement with the same mask. -- With Best Regards, Andy Shevchenko
© 2016 - 2026 Red Hat, Inc.