2023-01-13 22:20:56

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

The ->of_gpio_ranges_fallback() repeats the idea that lies behind
->add_pin_ranges(), while the latter covers more cases that the former
hook. Drop the former one for good.

Changelog v3:
- moved check of the property presense to GPIO library
- split out the refcount fix in a separate patch
- added cover letter

Andy Shevchenko (4):
gpiolib: Check "gpio-ranges" before calling ->add_pin_ranges()
pinctrl: bcm2835: Remove of_node_put() in
bcm2835_of_gpio_ranges_fallback()
pinctrl: bcm2835: Switch to use ->add_pin_ranges()
Revert "gpiolib: of: Introduce hook for missing gpio-ranges"

drivers/gpio/gpiolib-of.c | 5 -----
drivers/gpio/gpiolib.c | 8 ++++++++
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 10 ++++------
include/linux/gpio/driver.h | 12 ------------
4 files changed, 12 insertions(+), 23 deletions(-)

--
2.39.0


2023-01-13 22:22:29

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v3 2/4] pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback()

Remove wrong of_node_put() in bcm2835_of_gpio_ranges_fallback(),
there is no counterpart of_node_get() for it.

Fixes: d2b67744fd99 ("pinctrl: bcm2835: implement hook for missing gpio-ranges")
Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index 7857e612a100..c7cdccdb4332 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -363,8 +363,6 @@ static int bcm2835_of_gpio_ranges_fallback(struct gpio_chip *gc,
{
struct pinctrl_dev *pctldev = of_pinctrl_get(np);

- of_node_put(np);
-
if (!pctldev)
return 0;

--
2.39.0

2023-01-13 22:24:21

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v3 4/4] Revert "gpiolib: of: Introduce hook for missing gpio-ranges"

This reverts commit 3550bba25d5587a701e6edf20e20984d2ee72c78.

No users for this one, revert it for good.
The ->add_pin_ranges() can be used instead.

Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/gpio/gpiolib-of.c | 5 -----
include/linux/gpio/driver.h | 12 ------------
2 files changed, 17 deletions(-)

diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index 72d8a3da31e3..266352b1a966 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
@@ -980,11 +980,6 @@ static int of_gpiochip_add_pin_range(struct gpio_chip *chip)
if (!np)
return 0;

- if (!of_property_read_bool(np, "gpio-ranges") &&
- chip->of_gpio_ranges_fallback) {
- return chip->of_gpio_ranges_fallback(chip, np);
- }
-
group_names = of_find_property(np, group_names_propname, NULL);

for (;; index++) {
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index ddc7a14a274f..5ab50ba3c309 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -521,18 +521,6 @@ struct gpio_chip {
*/
int (*of_xlate)(struct gpio_chip *gc,
const struct of_phandle_args *gpiospec, u32 *flags);
-
- /**
- * @of_gpio_ranges_fallback:
- *
- * Optional hook for the case that no gpio-ranges property is defined
- * within the device tree node "np" (usually DT before introduction
- * of gpio-ranges). So this callback is helpful to provide the
- * necessary backward compatibility for the pin ranges.
- */
- int (*of_gpio_ranges_fallback)(struct gpio_chip *gc,
- struct device_node *np);
-
#endif /* CONFIG_OF_GPIO */
};

--
2.39.0

2023-01-14 11:12:44

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH v3 2/4] pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback()

Hi Andy,

Am 13.01.23 um 22:53 schrieb Andy Shevchenko:
> Remove wrong of_node_put() in bcm2835_of_gpio_ranges_fallback(),
> there is no counterpart of_node_get() for it.
>
> Fixes: d2b67744fd99 ("pinctrl: bcm2835: implement hook for missing gpio-ranges")
> Signed-off-by: Andy Shevchenko <[email protected]>

thanks for fixing. It seems that i got confused by function name and
usage in other driver.

Reviewed-by: Stefan Wahren <[email protected]>

> ---
> drivers/pinctrl/bcm/pinctrl-bcm2835.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
> index 7857e612a100..c7cdccdb4332 100644
> --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
> +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
> @@ -363,8 +363,6 @@ static int bcm2835_of_gpio_ranges_fallback(struct gpio_chip *gc,
> {
> struct pinctrl_dev *pctldev = of_pinctrl_get(np);
>
> - of_node_put(np);
> -
> if (!pctldev)
> return 0;
>

2023-01-14 11:24:20

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v3 2/4] pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback()

On Sat, Jan 14, 2023 at 12:03:07PM +0100, Stefan Wahren wrote:
> Am 13.01.23 um 22:53 schrieb Andy Shevchenko:
> > Remove wrong of_node_put() in bcm2835_of_gpio_ranges_fallback(),
> > there is no counterpart of_node_get() for it.
> >
> > Fixes: d2b67744fd99 ("pinctrl: bcm2835: implement hook for missing gpio-ranges")
> > Signed-off-by: Andy Shevchenko <[email protected]>
>
> thanks for fixing. It seems that i got confused by function name and usage
> in other driver.

You're welcome! Would be nice if you or somebody else have a chance to test
the series.

> Reviewed-by: Stefan Wahren <[email protected]>

Thank you!

--
With Best Regards,
Andy Shevchenko


2023-01-14 17:13:41

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH v3 2/4] pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback()



On 1/14/2023 3:10 AM, Andy Shevchenko wrote:
> On Sat, Jan 14, 2023 at 12:03:07PM +0100, Stefan Wahren wrote:
>> Am 13.01.23 um 22:53 schrieb Andy Shevchenko:
>>> Remove wrong of_node_put() in bcm2835_of_gpio_ranges_fallback(),
>>> there is no counterpart of_node_get() for it.
>>>
>>> Fixes: d2b67744fd99 ("pinctrl: bcm2835: implement hook for missing gpio-ranges")
>>> Signed-off-by: Andy Shevchenko <[email protected]>
>>
>> thanks for fixing. It seems that i got confused by function name and usage
>> in other driver.
>
> You're welcome! Would be nice if you or somebody else have a chance to test
> the series.

Yes I should be able to do that in the next few days.
--
Florian

2023-01-16 10:08:10

by Bartosz Golaszewski

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

On Fri, Jan 13, 2023 at 10:53 PM Andy Shevchenko
<[email protected]> wrote:
>
> The ->of_gpio_ranges_fallback() repeats the idea that lies behind
> ->add_pin_ranges(), while the latter covers more cases that the former
> hook. Drop the former one for good.
>
> Changelog v3:
> - moved check of the property presense to GPIO library
> - split out the refcount fix in a separate patch
> - added cover letter
>
> Andy Shevchenko (4):
> gpiolib: Check "gpio-ranges" before calling ->add_pin_ranges()
> pinctrl: bcm2835: Remove of_node_put() in
> bcm2835_of_gpio_ranges_fallback()
> pinctrl: bcm2835: Switch to use ->add_pin_ranges()
> Revert "gpiolib: of: Introduce hook for missing gpio-ranges"
>
> drivers/gpio/gpiolib-of.c | 5 -----
> drivers/gpio/gpiolib.c | 8 ++++++++
> drivers/pinctrl/bcm/pinctrl-bcm2835.c | 10 ++++------
> include/linux/gpio/driver.h | 12 ------------
> 4 files changed, 12 insertions(+), 23 deletions(-)
>
> --
> 2.39.0
>

For GPIO part:

Acked-by: Bartosz Golaszewski <[email protected]>

2023-01-19 17:33:10

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

Hi Andy,

Am 13.01.23 um 22:53 schrieb Andy Shevchenko:
> The ->of_gpio_ranges_fallback() repeats the idea that lies behind
> ->add_pin_ranges(), while the latter covers more cases that the former
> hook. Drop the former one for good.

i successful tested booting of this series with multi_v7_defconfig on
Raspberry Pi 4 (with and without gpio-ranges in DTB):

Tested-by: Stefan Wahren <[email protected]>

>
> Changelog v3:
> - moved check of the property presense to GPIO library
> - split out the refcount fix in a separate patch
> - added cover letter
>
> Andy Shevchenko (4):
> gpiolib: Check "gpio-ranges" before calling ->add_pin_ranges()
> pinctrl: bcm2835: Remove of_node_put() in
> bcm2835_of_gpio_ranges_fallback()
> pinctrl: bcm2835: Switch to use ->add_pin_ranges()
> Revert "gpiolib: of: Introduce hook for missing gpio-ranges"
>
> drivers/gpio/gpiolib-of.c | 5 -----
> drivers/gpio/gpiolib.c | 8 ++++++++
> drivers/pinctrl/bcm/pinctrl-bcm2835.c | 10 ++++------
> include/linux/gpio/driver.h | 12 ------------
> 4 files changed, 12 insertions(+), 23 deletions(-)
>

2023-01-19 18:42:34

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

On Thu, Jan 19, 2023 at 06:28:27PM +0100, Stefan Wahren wrote:
> Hi Andy,
>
> Am 13.01.23 um 22:53 schrieb Andy Shevchenko:
> > The ->of_gpio_ranges_fallback() repeats the idea that lies behind
> > ->add_pin_ranges(), while the latter covers more cases that the former
> > hook. Drop the former one for good.
>
> i successful tested booting of this series with multi_v7_defconfig on
> Raspberry Pi 4 (with and without gpio-ranges in DTB):
>
> Tested-by: Stefan Wahren <[email protected]>

Thank you!

--
With Best Regards,
Andy Shevchenko


2023-01-19 20:43:04

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

On 1/13/23 13:53, Andy Shevchenko wrote:
> The ->of_gpio_ranges_fallback() repeats the idea that lies behind
> ->add_pin_ranges(), while the latter covers more cases that the former
> hook. Drop the former one for good.
>
> Changelog v3:
> - moved check of the property presense to GPIO library
> - split out the refcount fix in a separate patch
> - added cover letter

Tested-by: Florian Fainelli <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>

Thanks!
--
Florian

2023-01-26 12:40:15

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] gpiolib: get rid of exessive ->of_gpio_ranges_fallback()

On Fri, Jan 13, 2023 at 10:53 PM Andy Shevchenko
<[email protected]> wrote:

> The ->of_gpio_ranges_fallback() repeats the idea that lies behind
> ->add_pin_ranges(), while the latter covers more cases that the former
> hook. Drop the former one for good.
>
> Changelog v3:
> - moved check of the property presense to GPIO library
> - split out the refcount fix in a separate patch
> - added cover letter

Patches applied! Sorry for taking almost 2 weeks :/

Yours,
Linus Walleij