linux-rockchip.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pinctrl/rockchip: fix gpio device creation
@ 2021-11-26 15:13 John Keeping
  2021-12-02  1:25 ` Linus Walleij
  0 siblings, 1 reply; 2+ messages in thread
From: John Keeping @ 2021-11-26 15:13 UTC (permalink / raw)
  To: linux-gpio
  Cc: John Keeping, Linus Walleij, Heiko Stuebner, Jianqun Xu,
	linux-arm-kernel, linux-rockchip, linux-kernel

GPIO nodes are not themselves busses, so passing rockchip_bank_match
here is wrong.  Passing NULL instead uses the standard bus match table
which is more appropriate.

devm_of_platform_populate() shows that this is the normal way to call
of_platform_populate() from a device driver, so in order to match that
more closely also add the pinctrl device as the parent for the newly
created GPIO controllers.

Specifically, using the wrong match here can break dynamic GPIO hogs as
marking the GPIO bank as a bus means that of_platform_notify() will set
OF_POPULATED on new child nodes and if this happens before
of_gpio_notify() is called then the new hog will be skipped as
OF_POPULATED is already set.

Fixes: 9ce9a02039de ("pinctrl/rockchip: drop the gpio related codes")
Signed-off-by: John Keeping <john@metanate.com>
---
 drivers/pinctrl/pinctrl-rockchip.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index 438808a867cf..d8dd8415fa81 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -2735,7 +2735,7 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, info);
 
-	ret = of_platform_populate(np, rockchip_bank_match, NULL, NULL);
+	ret = of_platform_populate(np, NULL, NULL, &pdev->dev);
 	if (ret)
 		return dev_err_probe(dev, ret, "failed to register gpio device\n");
 
-- 
2.34.1


_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

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

* Re: [PATCH] pinctrl/rockchip: fix gpio device creation
  2021-11-26 15:13 [PATCH] pinctrl/rockchip: fix gpio device creation John Keeping
@ 2021-12-02  1:25 ` Linus Walleij
  0 siblings, 0 replies; 2+ messages in thread
From: Linus Walleij @ 2021-12-02  1:25 UTC (permalink / raw)
  To: John Keeping
  Cc: linux-gpio, Heiko Stuebner, Jianqun Xu, linux-arm-kernel,
	linux-rockchip, linux-kernel

On Fri, Nov 26, 2021 at 4:14 PM John Keeping <john@metanate.com> wrote:

> GPIO nodes are not themselves busses, so passing rockchip_bank_match
> here is wrong.  Passing NULL instead uses the standard bus match table
> which is more appropriate.
>
> devm_of_platform_populate() shows that this is the normal way to call
> of_platform_populate() from a device driver, so in order to match that
> more closely also add the pinctrl device as the parent for the newly
> created GPIO controllers.
>
> Specifically, using the wrong match here can break dynamic GPIO hogs as
> marking the GPIO bank as a bus means that of_platform_notify() will set
> OF_POPULATED on new child nodes and if this happens before
> of_gpio_notify() is called then the new hog will be skipped as
> OF_POPULATED is already set.
>
> Fixes: 9ce9a02039de ("pinctrl/rockchip: drop the gpio related codes")
> Signed-off-by: John Keeping <john@metanate.com>

Patch applied.

Yours,
Linus Walleij

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

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

end of thread, other threads:[~2021-12-02  1:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-26 15:13 [PATCH] pinctrl/rockchip: fix gpio device creation John Keeping
2021-12-02  1:25 ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).