* [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 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
* 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
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.