diff mbox series

[v4,3/9] staging: iio: ad7780: set pattern values and masks directly

Message ID 9c8331166124ec2bd52794a9c9f844bfb70d1cd9.1551358569.git.renatogeh@gmail.com (mailing list archive)
State New, archived
Headers show
Series staging: iio: ad7780: move out of staging | expand

Commit Message

Renato Lui Geh Feb. 28, 2019, 2:24 p.m. UTC
The AD7780 driver contains status pattern bits designed for checking
whether serial transfers have been correctly performed. Pattern macros
were previously generated through bit fields. This patch sets good
pattern values directly and masks through GENMASK.

Signed-off-by: Renato Lui Geh <renatogeh@gmail.com>
---
 drivers/staging/iio/adc/ad7780.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

Comments

Alexandru Ardelean March 1, 2019, 7:17 a.m. UTC | #1
On Thu, 2019-02-28 at 11:24 -0300, Renato Lui Geh wrote:
> 
> 
> The AD7780 driver contains status pattern bits designed for checking
> whether serial transfers have been correctly performed. Pattern macros
> were previously generated through bit fields. This patch sets good
> pattern values directly and masks through GENMASK.
> 
> Signed-off-by: Renato Lui Geh <renatogeh@gmail.com>
> ---
>  drivers/staging/iio/adc/ad7780.c | 20 +++++++++-----------
>  1 file changed, 9 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/ad7780.c
> b/drivers/staging/iio/adc/ad7780.c
> index 7a68e90ddf14..56c49e28f432 100644
> --- a/drivers/staging/iio/adc/ad7780.c
> +++ b/drivers/staging/iio/adc/ad7780.c
> @@ -17,6 +17,7 @@
>  #include <linux/sched.h>
>  #include <linux/gpio/consumer.h>
>  #include <linux/module.h>
> +#include <linux/bits.h>
> 
>  #include <linux/iio/iio.h>
>  #include <linux/iio/sysfs.h>
> @@ -28,16 +29,13 @@
>  #define AD7780_ID1             BIT(4)
>  #define AD7780_ID0             BIT(3)
>  #define AD7780_GAIN            BIT(2)
> -#define AD7780_PAT1            BIT(1)
> -#define AD7780_PAT0            BIT(0)

I don't see a problem to leave the bitfields;  they can be read & matched
easier with the datasheet.

> 
> -#define AD7780_PATTERN         (AD7780_PAT0)
> -#define AD7780_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1)
> 
> -#define AD7170_PAT2            BIT(2)

> +#define AD7780_PATTERN_GOOD    1

It was also nice before that the PAT0..PAT2 bitfields were used to define a
good pattern, since it's easier to match with the datasheet.


> +#define AD7780_PATTERN_MASK    GENMASK(1, 0)

I like the general usage of GENMASK, but I'm not sure in this case it's
worth doing. Maybe I missed a discussion somewhere, about doing this
change, but it is mostly a cosmetic without any functional change.


> 
> -#define AD7170_PATTERN         (AD7780_PAT0 | AD7170_PAT2)
> -#define AD7170_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)
> +#define AD7170_PATTERN_GOOD    5
> +#define AD7170_PATTERN_MASK    GENMASK(2, 0)
> 
>  #define AD7780_GAIN_MIDPOINT   64
>  #define AD7780_FILTER_MIDPOINT 13350
> @@ -209,25 +207,25 @@ static const struct ad_sigma_delta_info
> ad7780_sigma_delta_info = {
>  static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
>         [ID_AD7170] = {
>                 .channel = AD7170_CHANNEL(12, 24),
> -               .pattern = AD7170_PATTERN,
> +               .pattern = AD7170_PATTERN_GOOD,
>                 .pattern_mask = AD7170_PATTERN_MASK,
>                 .is_ad778x = false,
>         },
>         [ID_AD7171] = {
>                 .channel = AD7170_CHANNEL(16, 24),
> -               .pattern = AD7170_PATTERN,
> +               .pattern = AD7170_PATTERN_GOOD,
>                 .pattern_mask = AD7170_PATTERN_MASK,
>                 .is_ad778x = false,
>         },
>         [ID_AD7780] = {
>                 .channel = AD7780_CHANNEL(24, 32),
> -               .pattern = AD7780_PATTERN,
> +               .pattern = AD7780_PATTERN_GOOD,
>                 .pattern_mask = AD7780_PATTERN_MASK,
>                 .is_ad778x = true,
>         },
>         [ID_AD7781] = {
>                 .channel = AD7780_CHANNEL(20, 32),
> -               .pattern = AD7780_PATTERN,
> +               .pattern = AD7780_PATTERN_GOOD,
>                 .pattern_mask = AD7780_PATTERN_MASK,
>                 .is_ad778x = true,
>         },
> --
> 2.21.0
>
Jonathan Cameron March 2, 2019, 7:07 p.m. UTC | #2
On Fri, 1 Mar 2019 07:17:04 +0000
"Ardelean, Alexandru" <Alex.Ardelean@analog.com> wrote:

> On Thu, 2019-02-28 at 11:24 -0300, Renato Lui Geh wrote:
> > 
> > 
> > The AD7780 driver contains status pattern bits designed for checking
> > whether serial transfers have been correctly performed. Pattern macros
> > were previously generated through bit fields. This patch sets good
> > pattern values directly and masks through GENMASK.
> > 
> > Signed-off-by: Renato Lui Geh <renatogeh@gmail.com>
> > ---
> >  drivers/staging/iio/adc/ad7780.c | 20 +++++++++-----------
> >  1 file changed, 9 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/staging/iio/adc/ad7780.c
> > b/drivers/staging/iio/adc/ad7780.c
> > index 7a68e90ddf14..56c49e28f432 100644
> > --- a/drivers/staging/iio/adc/ad7780.c
> > +++ b/drivers/staging/iio/adc/ad7780.c
> > @@ -17,6 +17,7 @@
> >  #include <linux/sched.h>
> >  #include <linux/gpio/consumer.h>
> >  #include <linux/module.h>
> > +#include <linux/bits.h>
> > 
> >  #include <linux/iio/iio.h>
> >  #include <linux/iio/sysfs.h>
> > @@ -28,16 +29,13 @@
> >  #define AD7780_ID1             BIT(4)
> >  #define AD7780_ID0             BIT(3)
> >  #define AD7780_GAIN            BIT(2)
> > -#define AD7780_PAT1            BIT(1)
> > -#define AD7780_PAT0            BIT(0)  
> 
> I don't see a problem to leave the bitfields;  they can be read & matched
> easier with the datasheet.
> 
> > 
> > -#define AD7780_PATTERN         (AD7780_PAT0)
> > -#define AD7780_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1)
> > 
> > -#define AD7170_PAT2            BIT(2)  
> 
> > +#define AD7780_PATTERN_GOOD    1  
> 
> It was also nice before that the PAT0..PAT2 bitfields were used to define a
> good pattern, since it's easier to match with the datasheet.
This one was much suggestion.  Not particularly important one.

Personally if a datasheet is pointlessly confusing I tend to ignore it.
This is a two bit field as the bits don't have independent meaning!

I'm not strongly tied to it though and as it's an Analog driver and
you all do a good job maintaining the set I'll go with your preference!
I do prefer the naming of PATTERN_GOOD though if nothing else!
> 
> 
> > +#define AD7780_PATTERN_MASK    GENMASK(1, 0)  
> 
> I like the general usage of GENMASK, but I'm not sure in this case it's
> worth doing. Maybe I missed a discussion somewhere, about doing this
> change, but it is mostly a cosmetic without any functional change.
> 
> 
> > 
> > -#define AD7170_PATTERN         (AD7780_PAT0 | AD7170_PAT2)
> > -#define AD7170_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)
> > +#define AD7170_PATTERN_GOOD    5
> > +#define AD7170_PATTERN_MASK    GENMASK(2, 0)
> > 
> >  #define AD7780_GAIN_MIDPOINT   64
> >  #define AD7780_FILTER_MIDPOINT 13350
> > @@ -209,25 +207,25 @@ static const struct ad_sigma_delta_info
> > ad7780_sigma_delta_info = {
> >  static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
> >         [ID_AD7170] = {
> >                 .channel = AD7170_CHANNEL(12, 24),
> > -               .pattern = AD7170_PATTERN,
> > +               .pattern = AD7170_PATTERN_GOOD,
> >                 .pattern_mask = AD7170_PATTERN_MASK,
> >                 .is_ad778x = false,
> >         },
> >         [ID_AD7171] = {
> >                 .channel = AD7170_CHANNEL(16, 24),
> > -               .pattern = AD7170_PATTERN,
> > +               .pattern = AD7170_PATTERN_GOOD,
> >                 .pattern_mask = AD7170_PATTERN_MASK,
> >                 .is_ad778x = false,
> >         },
> >         [ID_AD7780] = {
> >                 .channel = AD7780_CHANNEL(24, 32),
> > -               .pattern = AD7780_PATTERN,
> > +               .pattern = AD7780_PATTERN_GOOD,
> >                 .pattern_mask = AD7780_PATTERN_MASK,
> >                 .is_ad778x = true,
> >         },
> >         [ID_AD7781] = {
> >                 .channel = AD7780_CHANNEL(20, 32),
> > -               .pattern = AD7780_PATTERN,
> > +               .pattern = AD7780_PATTERN_GOOD,
> >                 .pattern_mask = AD7780_PATTERN_MASK,
> >                 .is_ad778x = true,
> >         },
> > --
> > 2.21.0
> >
Jonathan Cameron March 2, 2019, 7:08 p.m. UTC | #3
On Sat, 2 Mar 2019 19:07:16 +0000
Jonathan Cameron <jic23@kernel.org> wrote:

> On Fri, 1 Mar 2019 07:17:04 +0000
> "Ardelean, Alexandru" <Alex.Ardelean@analog.com> wrote:
> 
> > On Thu, 2019-02-28 at 11:24 -0300, Renato Lui Geh wrote:  
> > > 
> > > 
> > > The AD7780 driver contains status pattern bits designed for checking
> > > whether serial transfers have been correctly performed. Pattern macros
> > > were previously generated through bit fields. This patch sets good
> > > pattern values directly and masks through GENMASK.
> > > 
> > > Signed-off-by: Renato Lui Geh <renatogeh@gmail.com>
> > > ---
> > >  drivers/staging/iio/adc/ad7780.c | 20 +++++++++-----------
> > >  1 file changed, 9 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/drivers/staging/iio/adc/ad7780.c
> > > b/drivers/staging/iio/adc/ad7780.c
> > > index 7a68e90ddf14..56c49e28f432 100644
> > > --- a/drivers/staging/iio/adc/ad7780.c
> > > +++ b/drivers/staging/iio/adc/ad7780.c
> > > @@ -17,6 +17,7 @@
> > >  #include <linux/sched.h>
> > >  #include <linux/gpio/consumer.h>
> > >  #include <linux/module.h>
> > > +#include <linux/bits.h>
> > > 
> > >  #include <linux/iio/iio.h>
> > >  #include <linux/iio/sysfs.h>
> > > @@ -28,16 +29,13 @@
> > >  #define AD7780_ID1             BIT(4)
> > >  #define AD7780_ID0             BIT(3)
> > >  #define AD7780_GAIN            BIT(2)
> > > -#define AD7780_PAT1            BIT(1)
> > > -#define AD7780_PAT0            BIT(0)    
> > 
> > I don't see a problem to leave the bitfields;  they can be read & matched
> > easier with the datasheet.
> >   
> > > 
> > > -#define AD7780_PATTERN         (AD7780_PAT0)
> > > -#define AD7780_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1)
> > > 
> > > -#define AD7170_PAT2            BIT(2)    
> >   
> > > +#define AD7780_PATTERN_GOOD    1    
> > 
> > It was also nice before that the PAT0..PAT2 bitfields were used to define a
> > good pattern, since it's easier to match with the datasheet.  
> This one was much suggestion.  Not particularly important one.
Not enough sleep this week clearly :)  
This one was _my_ suggestion.

> 
> Personally if a datasheet is pointlessly confusing I tend to ignore it.
> This is a two bit field as the bits don't have independent meaning!
> 
> I'm not strongly tied to it though and as it's an Analog driver and
> you all do a good job maintaining the set I'll go with your preference!
> I do prefer the naming of PATTERN_GOOD though if nothing else!
> > 
> >   
> > > +#define AD7780_PATTERN_MASK    GENMASK(1, 0)    
> > 
> > I like the general usage of GENMASK, but I'm not sure in this case it's
> > worth doing. Maybe I missed a discussion somewhere, about doing this
> > change, but it is mostly a cosmetic without any functional change.
> > 
> >   
> > > 
> > > -#define AD7170_PATTERN         (AD7780_PAT0 | AD7170_PAT2)
> > > -#define AD7170_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)
> > > +#define AD7170_PATTERN_GOOD    5
> > > +#define AD7170_PATTERN_MASK    GENMASK(2, 0)
> > > 
> > >  #define AD7780_GAIN_MIDPOINT   64
> > >  #define AD7780_FILTER_MIDPOINT 13350
> > > @@ -209,25 +207,25 @@ static const struct ad_sigma_delta_info
> > > ad7780_sigma_delta_info = {
> > >  static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
> > >         [ID_AD7170] = {
> > >                 .channel = AD7170_CHANNEL(12, 24),
> > > -               .pattern = AD7170_PATTERN,
> > > +               .pattern = AD7170_PATTERN_GOOD,
> > >                 .pattern_mask = AD7170_PATTERN_MASK,
> > >                 .is_ad778x = false,
> > >         },
> > >         [ID_AD7171] = {
> > >                 .channel = AD7170_CHANNEL(16, 24),
> > > -               .pattern = AD7170_PATTERN,
> > > +               .pattern = AD7170_PATTERN_GOOD,
> > >                 .pattern_mask = AD7170_PATTERN_MASK,
> > >                 .is_ad778x = false,
> > >         },
> > >         [ID_AD7780] = {
> > >                 .channel = AD7780_CHANNEL(24, 32),
> > > -               .pattern = AD7780_PATTERN,
> > > +               .pattern = AD7780_PATTERN_GOOD,
> > >                 .pattern_mask = AD7780_PATTERN_MASK,
> > >                 .is_ad778x = true,
> > >         },
> > >         [ID_AD7781] = {
> > >                 .channel = AD7780_CHANNEL(20, 32),
> > > -               .pattern = AD7780_PATTERN,
> > > +               .pattern = AD7780_PATTERN_GOOD,
> > >                 .pattern_mask = AD7780_PATTERN_MASK,
> > >                 .is_ad778x = true,
> > >         },
> > > --
> > > 2.21.0
> > >     
>
Alexandru Ardelean March 4, 2019, 7:19 a.m. UTC | #4
On Sat, 2019-03-02 at 19:08 +0000, Jonathan Cameron wrote:
> [External]
> 
> 
> On Sat, 2 Mar 2019 19:07:16 +0000
> Jonathan Cameron <jic23@kernel.org> wrote:
> 
> > On Fri, 1 Mar 2019 07:17:04 +0000
> > "Ardelean, Alexandru" <Alex.Ardelean@analog.com> wrote:
> > 
> > > On Thu, 2019-02-28 at 11:24 -0300, Renato Lui Geh wrote:
> > > > 
> > > > 
> > > > The AD7780 driver contains status pattern bits designed for
> > > > checking
> > > > whether serial transfers have been correctly performed. Pattern
> > > > macros
> > > > were previously generated through bit fields. This patch sets good
> > > > pattern values directly and masks through GENMASK.
> > > > 
> > > > Signed-off-by: Renato Lui Geh <renatogeh@gmail.com>
> > > > ---
> > > >  drivers/staging/iio/adc/ad7780.c | 20 +++++++++-----------
> > > >  1 file changed, 9 insertions(+), 11 deletions(-)
> > > > 
> > > > diff --git a/drivers/staging/iio/adc/ad7780.c
> > > > b/drivers/staging/iio/adc/ad7780.c
> > > > index 7a68e90ddf14..56c49e28f432 100644
> > > > --- a/drivers/staging/iio/adc/ad7780.c
> > > > +++ b/drivers/staging/iio/adc/ad7780.c
> > > > @@ -17,6 +17,7 @@
> > > >  #include <linux/sched.h>
> > > >  #include <linux/gpio/consumer.h>
> > > >  #include <linux/module.h>
> > > > +#include <linux/bits.h>
> > > > 
> > > >  #include <linux/iio/iio.h>
> > > >  #include <linux/iio/sysfs.h>
> > > > @@ -28,16 +29,13 @@
> > > >  #define AD7780_ID1             BIT(4)
> > > >  #define AD7780_ID0             BIT(3)
> > > >  #define AD7780_GAIN            BIT(2)
> > > > -#define AD7780_PAT1            BIT(1)
> > > > -#define AD7780_PAT0            BIT(0)
> > > 
> > > I don't see a problem to leave the bitfields;  they can be read &
> > > matched
> > > easier with the datasheet.
> > > 
> > > > 
> > > > -#define AD7780_PATTERN         (AD7780_PAT0)
> > > > -#define AD7780_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1)
> > > > 
> > > > -#define AD7170_PAT2            BIT(2)
> > > > +#define AD7780_PATTERN_GOOD    1
> > > 
> > > It was also nice before that the PAT0..PAT2 bitfields were used to
> > > define a
> > > good pattern, since it's easier to match with the datasheet.
> > 
> > This one was much suggestion.  Not particularly important one.
> 
> Not enough sleep this week clearly :)
> This one was _my_ suggestion.

Ok.
I assumed a bit I missed a discussion somewhere.

Let's have this as-is here.
I don't mind it much either.
My [personal] feeling is that [in the context of a move-out-of-staging-of-
this-driver] this patch is a bit of noise.

If the series were more tidy-up, then I probably would not have replied.

> 
> > 
> > Personally if a datasheet is pointlessly confusing I tend to ignore it.
> > This is a two bit field as the bits don't have independent meaning!
> > 
> > I'm not strongly tied to it though and as it's an Analog driver and
> > you all do a good job maintaining the set I'll go with your preference!
> > I do prefer the naming of PATTERN_GOOD though if nothing else!
> > > 
> > > 
> > > > +#define AD7780_PATTERN_MASK    GENMASK(1, 0)
> > > 
> > > I like the general usage of GENMASK, but I'm not sure in this case
> > > it's
> > > worth doing. Maybe I missed a discussion somewhere, about doing this
> > > change, but it is mostly a cosmetic without any functional change.
> > > 
> > > 
> > > > 
> > > > -#define AD7170_PATTERN         (AD7780_PAT0 | AD7170_PAT2)
> > > > -#define AD7170_PATTERN_MASK    (AD7780_PAT0 | AD7780_PAT1 |
> > > > AD7170_PAT2)
> > > > +#define AD7170_PATTERN_GOOD    5
> > > > +#define AD7170_PATTERN_MASK    GENMASK(2, 0)
> > > > 
> > > >  #define AD7780_GAIN_MIDPOINT   64
> > > >  #define AD7780_FILTER_MIDPOINT 13350
> > > > @@ -209,25 +207,25 @@ static const struct ad_sigma_delta_info
> > > > ad7780_sigma_delta_info = {
> > > >  static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
> > > >         [ID_AD7170] = {
> > > >                 .channel = AD7170_CHANNEL(12, 24),
> > > > -               .pattern = AD7170_PATTERN,
> > > > +               .pattern = AD7170_PATTERN_GOOD,
> > > >                 .pattern_mask = AD7170_PATTERN_MASK,
> > > >                 .is_ad778x = false,
> > > >         },
> > > >         [ID_AD7171] = {
> > > >                 .channel = AD7170_CHANNEL(16, 24),
> > > > -               .pattern = AD7170_PATTERN,
> > > > +               .pattern = AD7170_PATTERN_GOOD,
> > > >                 .pattern_mask = AD7170_PATTERN_MASK,
> > > >                 .is_ad778x = false,
> > > >         },
> > > >         [ID_AD7780] = {
> > > >                 .channel = AD7780_CHANNEL(24, 32),
> > > > -               .pattern = AD7780_PATTERN,
> > > > +               .pattern = AD7780_PATTERN_GOOD,
> > > >                 .pattern_mask = AD7780_PATTERN_MASK,
> > > >                 .is_ad778x = true,
> > > >         },
> > > >         [ID_AD7781] = {
> > > >                 .channel = AD7780_CHANNEL(20, 32),
> > > > -               .pattern = AD7780_PATTERN,
> > > > +               .pattern = AD7780_PATTERN_GOOD,
> > > >                 .pattern_mask = AD7780_PATTERN_MASK,
> > > >                 .is_ad778x = true,
> > > >         },
> > > > --
> > > > 2.21.0
> > > > 
> 
>
diff mbox series

Patch

diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c
index 7a68e90ddf14..56c49e28f432 100644
--- a/drivers/staging/iio/adc/ad7780.c
+++ b/drivers/staging/iio/adc/ad7780.c
@@ -17,6 +17,7 @@ 
 #include <linux/sched.h>
 #include <linux/gpio/consumer.h>
 #include <linux/module.h>
+#include <linux/bits.h>
 
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
@@ -28,16 +29,13 @@ 
 #define AD7780_ID1		BIT(4)
 #define AD7780_ID0		BIT(3)
 #define AD7780_GAIN		BIT(2)
-#define AD7780_PAT1		BIT(1)
-#define AD7780_PAT0		BIT(0)
 
-#define AD7780_PATTERN		(AD7780_PAT0)
-#define AD7780_PATTERN_MASK	(AD7780_PAT0 | AD7780_PAT1)
 
-#define AD7170_PAT2		BIT(2)
+#define AD7780_PATTERN_GOOD	1
+#define AD7780_PATTERN_MASK	GENMASK(1, 0)
 
-#define AD7170_PATTERN		(AD7780_PAT0 | AD7170_PAT2)
-#define AD7170_PATTERN_MASK	(AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)
+#define AD7170_PATTERN_GOOD	5
+#define AD7170_PATTERN_MASK	GENMASK(2, 0)
 
 #define AD7780_GAIN_MIDPOINT	64
 #define AD7780_FILTER_MIDPOINT	13350
@@ -209,25 +207,25 @@  static const struct ad_sigma_delta_info ad7780_sigma_delta_info = {
 static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
 	[ID_AD7170] = {
 		.channel = AD7170_CHANNEL(12, 24),
-		.pattern = AD7170_PATTERN,
+		.pattern = AD7170_PATTERN_GOOD,
 		.pattern_mask = AD7170_PATTERN_MASK,
 		.is_ad778x = false,
 	},
 	[ID_AD7171] = {
 		.channel = AD7170_CHANNEL(16, 24),
-		.pattern = AD7170_PATTERN,
+		.pattern = AD7170_PATTERN_GOOD,
 		.pattern_mask = AD7170_PATTERN_MASK,
 		.is_ad778x = false,
 	},
 	[ID_AD7780] = {
 		.channel = AD7780_CHANNEL(24, 32),
-		.pattern = AD7780_PATTERN,
+		.pattern = AD7780_PATTERN_GOOD,
 		.pattern_mask = AD7780_PATTERN_MASK,
 		.is_ad778x = true,
 	},
 	[ID_AD7781] = {
 		.channel = AD7780_CHANNEL(20, 32),
-		.pattern = AD7780_PATTERN,
+		.pattern = AD7780_PATTERN_GOOD,
 		.pattern_mask = AD7780_PATTERN_MASK,
 		.is_ad778x = true,
 	},