All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 1/2] gpiolib: improve coding style for local variables
@ 2021-12-02 13:40 Bartosz Golaszewski
  2021-12-02 13:40 ` [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code Bartosz Golaszewski
  2021-12-06 15:01 ` [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski
  0 siblings, 2 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2021-12-02 13:40 UTC (permalink / raw)
  To: Linus Walleij, Andy Shevchenko, Johan Hovold
  Cc: linux-gpio, linux-kernel, Bartosz Golaszewski

Drop unneeded whitespaces and put the variables of the same type
together for consistency with the rest of the code.

Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v1 -> v2:
- no changes

v2 -> v3:
- keep initializations on separate lines

v3 -> v4:
- no changes

 drivers/gpio/gpiolib.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index abfbf546d159..ede8b8a7aa18 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -594,11 +594,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 			       struct lock_class_key *request_key)
 {
 	struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
-	unsigned long	flags;
-	int		ret = 0;
-	unsigned	i;
-	int		base = gc->base;
 	struct gpio_device *gdev;
+	unsigned long flags;
+	int base = gc->base;
+	unsigned int i;
+	int ret = 0;
 
 	/*
 	 * First: allocate and populate the internal stat container, and
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code
  2021-12-02 13:40 [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski
@ 2021-12-02 13:40 ` Bartosz Golaszewski
  2021-12-02 15:37   ` Andy Shevchenko
  2021-12-06 15:01   ` Bartosz Golaszewski
  2021-12-06 15:01 ` [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski
  1 sibling, 2 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2021-12-02 13:40 UTC (permalink / raw)
  To: Linus Walleij, Andy Shevchenko, Johan Hovold
  Cc: linux-gpio, linux-kernel, Bartosz Golaszewski

Several drivers read the 'ngpios' device property on their own, but
since it's defined as a standard GPIO property in the device tree bindings
anyway, it's a good candidate for generalization. If the driver didn't
set its gc->ngpio, try to read the 'ngpios' property from the GPIO
device's firmware node before bailing out.

Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
v1 -> v2:
- use device_property_read_u32() instead of fwnode_property_read_u32()
- reverse the error check logic

v2 -> v3:
- don't shadow errors other than -ENODATA in device_property_read_u32()

v3 -> v4:
- also make sure we return -EINVAL when the device 'ngpios' property is
  set to 0 (thanks Andy!)

 drivers/gpio/gpiolib.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index ede8b8a7aa18..bd9b8cb53476 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -599,6 +599,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 	int base = gc->base;
 	unsigned int i;
 	int ret = 0;
+	u32 ngpios;
 
 	/*
 	 * First: allocate and populate the internal stat container, and
@@ -646,6 +647,26 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 		goto err_free_dev_name;
 	}
 
+	/*
+	 * Try the device properties if the driver didn't supply the number
+	 * of GPIO lines.
+	 */
+	if (gc->ngpio == 0) {
+		ret = device_property_read_u32(&gdev->dev, "ngpios", &ngpios);
+		if (ret == -ENODATA)
+			/*
+			 * -ENODATA means that there is no property found and
+			 * we want to issue the error message to the user.
+			 * Besides that, we want to return different error code
+			 * to state that supplied value is not valid.
+			 * */
+			ngpios = 0;
+		else if (ret)
+			goto err_free_descs;
+
+		gc->ngpio = ngpios;
+	}
+
 	if (gc->ngpio == 0) {
 		chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
 		ret = -EINVAL;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code
  2021-12-02 13:40 ` [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code Bartosz Golaszewski
@ 2021-12-02 15:37   ` Andy Shevchenko
  2021-12-02 15:48     ` Bartosz Golaszewski
  2021-12-06 15:01   ` Bartosz Golaszewski
  1 sibling, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2021-12-02 15:37 UTC (permalink / raw)
  To: Bartosz Golaszewski; +Cc: Linus Walleij, Johan Hovold, linux-gpio, linux-kernel

On Thu, Dec 02, 2021 at 02:40:34PM +0100, Bartosz Golaszewski wrote:
> Several drivers read the 'ngpios' device property on their own, but
> since it's defined as a standard GPIO property in the device tree bindings
> anyway, it's a good candidate for generalization. If the driver didn't
> set its gc->ngpio, try to read the 'ngpios' property from the GPIO
> device's firmware node before bailing out.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
One nit-pick below (you may amend it when applying)

> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> v1 -> v2:
> - use device_property_read_u32() instead of fwnode_property_read_u32()
> - reverse the error check logic
> 
> v2 -> v3:
> - don't shadow errors other than -ENODATA in device_property_read_u32()
> 
> v3 -> v4:
> - also make sure we return -EINVAL when the device 'ngpios' property is
>   set to 0 (thanks Andy!)
> 
>  drivers/gpio/gpiolib.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index ede8b8a7aa18..bd9b8cb53476 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -599,6 +599,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
>  	int base = gc->base;
>  	unsigned int i;
>  	int ret = 0;
> +	u32 ngpios;
>  
>  	/*
>  	 * First: allocate and populate the internal stat container, and
> @@ -646,6 +647,26 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
>  		goto err_free_dev_name;
>  	}
>  
> +	/*
> +	 * Try the device properties if the driver didn't supply the number
> +	 * of GPIO lines.
> +	 */
> +	if (gc->ngpio == 0) {
> +		ret = device_property_read_u32(&gdev->dev, "ngpios", &ngpios);
> +		if (ret == -ENODATA)
> +			/*
> +			 * -ENODATA means that there is no property found and
> +			 * we want to issue the error message to the user.
> +			 * Besides that, we want to return different error code
> +			 * to state that supplied value is not valid.

> +			 * */

First '* ' is not needed.

> +			ngpios = 0;
> +		else if (ret)
> +			goto err_free_descs;
> +
> +		gc->ngpio = ngpios;
> +	}
> +
>  	if (gc->ngpio == 0) {
>  		chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
>  		ret = -EINVAL;
> -- 
> 2.25.1
> 

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code
  2021-12-02 15:37   ` Andy Shevchenko
@ 2021-12-02 15:48     ` Bartosz Golaszewski
  0 siblings, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2021-12-02 15:48 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Linus Walleij, Johan Hovold, open list:GPIO SUBSYSTEM,
	Linux Kernel Mailing List

On Thu, Dec 2, 2021 at 4:38 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Thu, Dec 02, 2021 at 02:40:34PM +0100, Bartosz Golaszewski wrote:
> > Several drivers read the 'ngpios' device property on their own, but
> > since it's defined as a standard GPIO property in the device tree bindings
> > anyway, it's a good candidate for generalization. If the driver didn't
> > set its gc->ngpio, try to read the 'ngpios' property from the GPIO
> > device's firmware node before bailing out.
>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> One nit-pick below (you may amend it when applying)
>
> > Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
> > Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> > ---
> > v1 -> v2:
> > - use device_property_read_u32() instead of fwnode_property_read_u32()
> > - reverse the error check logic
> >
> > v2 -> v3:
> > - don't shadow errors other than -ENODATA in device_property_read_u32()
> >
> > v3 -> v4:
> > - also make sure we return -EINVAL when the device 'ngpios' property is
> >   set to 0 (thanks Andy!)
> >
> >  drivers/gpio/gpiolib.c | 21 +++++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> >
> > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > index ede8b8a7aa18..bd9b8cb53476 100644
> > --- a/drivers/gpio/gpiolib.c
> > +++ b/drivers/gpio/gpiolib.c
> > @@ -599,6 +599,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
> >       int base = gc->base;
> >       unsigned int i;
> >       int ret = 0;
> > +     u32 ngpios;
> >
> >       /*
> >        * First: allocate and populate the internal stat container, and
> > @@ -646,6 +647,26 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
> >               goto err_free_dev_name;
> >       }
> >
> > +     /*
> > +      * Try the device properties if the driver didn't supply the number
> > +      * of GPIO lines.
> > +      */
> > +     if (gc->ngpio == 0) {
> > +             ret = device_property_read_u32(&gdev->dev, "ngpios", &ngpios);
> > +             if (ret == -ENODATA)
> > +                     /*
> > +                      * -ENODATA means that there is no property found and
> > +                      * we want to issue the error message to the user.
> > +                      * Besides that, we want to return different error code
> > +                      * to state that supplied value is not valid.
>
> > +                      * */
>
> First '* ' is not needed.
>

I'll fix it when applying.

Bart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 1/2] gpiolib: improve coding style for local variables
  2021-12-02 13:40 [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski
  2021-12-02 13:40 ` [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code Bartosz Golaszewski
@ 2021-12-06 15:01 ` Bartosz Golaszewski
  1 sibling, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2021-12-06 15:01 UTC (permalink / raw)
  To: Linus Walleij, Andy Shevchenko, Johan Hovold
  Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List

On Thu, Dec 2, 2021 at 2:40 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> Drop unneeded whitespaces and put the variables of the same type
> together for consistency with the rest of the code.
>
> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> v1 -> v2:
> - no changes
>
> v2 -> v3:
> - keep initializations on separate lines
>
> v3 -> v4:
> - no changes
>
>  drivers/gpio/gpiolib.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index abfbf546d159..ede8b8a7aa18 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -594,11 +594,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
>                                struct lock_class_key *request_key)
>  {
>         struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
> -       unsigned long   flags;
> -       int             ret = 0;
> -       unsigned        i;
> -       int             base = gc->base;
>         struct gpio_device *gdev;
> +       unsigned long flags;
> +       int base = gc->base;
> +       unsigned int i;
> +       int ret = 0;
>
>         /*
>          * First: allocate and populate the internal stat container, and
> --
> 2.25.1
>

Queued for next.

Bart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code
  2021-12-02 13:40 ` [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code Bartosz Golaszewski
  2021-12-02 15:37   ` Andy Shevchenko
@ 2021-12-06 15:01   ` Bartosz Golaszewski
  1 sibling, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2021-12-06 15:01 UTC (permalink / raw)
  To: Linus Walleij, Andy Shevchenko, Johan Hovold
  Cc: open list:GPIO SUBSYSTEM, Linux Kernel Mailing List

On Thu, Dec 2, 2021 at 2:40 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> Several drivers read the 'ngpios' device property on their own, but
> since it's defined as a standard GPIO property in the device tree bindings
> anyway, it's a good candidate for generalization. If the driver didn't
> set its gc->ngpio, try to read the 'ngpios' property from the GPIO
> device's firmware node before bailing out.
>
> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> v1 -> v2:
> - use device_property_read_u32() instead of fwnode_property_read_u32()
> - reverse the error check logic
>
> v2 -> v3:
> - don't shadow errors other than -ENODATA in device_property_read_u32()
>
> v3 -> v4:
> - also make sure we return -EINVAL when the device 'ngpios' property is
>   set to 0 (thanks Andy!)
>
>  drivers/gpio/gpiolib.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index ede8b8a7aa18..bd9b8cb53476 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -599,6 +599,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
>         int base = gc->base;
>         unsigned int i;
>         int ret = 0;
> +       u32 ngpios;
>
>         /*
>          * First: allocate and populate the internal stat container, and
> @@ -646,6 +647,26 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
>                 goto err_free_dev_name;
>         }
>
> +       /*
> +        * Try the device properties if the driver didn't supply the number
> +        * of GPIO lines.
> +        */
> +       if (gc->ngpio == 0) {
> +               ret = device_property_read_u32(&gdev->dev, "ngpios", &ngpios);
> +               if (ret == -ENODATA)
> +                       /*
> +                        * -ENODATA means that there is no property found and
> +                        * we want to issue the error message to the user.
> +                        * Besides that, we want to return different error code
> +                        * to state that supplied value is not valid.
> +                        * */
> +                       ngpios = 0;
> +               else if (ret)
> +                       goto err_free_descs;
> +
> +               gc->ngpio = ngpios;
> +       }
> +
>         if (gc->ngpio == 0) {
>                 chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
>                 ret = -EINVAL;
> --
> 2.25.1
>

Queued for next.

Bart

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-12-06 15:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-02 13:40 [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski
2021-12-02 13:40 ` [PATCH v4 2/2] gpiolib: check the 'ngpios' property in core gpiolib code Bartosz Golaszewski
2021-12-02 15:37   ` Andy Shevchenko
2021-12-02 15:48     ` Bartosz Golaszewski
2021-12-06 15:01   ` Bartosz Golaszewski
2021-12-06 15:01 ` [PATCH v4 1/2] gpiolib: improve coding style for local variables Bartosz Golaszewski

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.