All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC] gpiolib: ensure that fwnode is properly set
@ 2022-11-14 20:29 Brian Masney
  2022-11-14 21:02 ` Robert Marko
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Brian Masney @ 2022-11-14 20:29 UTC (permalink / raw)
  To: linus.walleij, brgl
  Cc: linux-gpio, linux-kernel, linux-arm-msm, psodagud, quic_shazhuss,
	quic_ppareek, ahalaney, echanude, nicolas.dechesne

Note that this is a RFC patch and not meant to be merged. I looked into
a problem with linux-next-20221110 on the Qualcomm SA8540P automotive
board (sc8280xp) where the UFS host controller would fail to probe due
to repeated probe deferrals when trying to get reset-gpios via
devm_gpiod_get_optional().

of_get_named_gpiod_flags() returns -EPROBE_DEFER, which is caused by
of_gpiochip_match_node_and_xlate() returning 0 since the of_xlate function
pointer is not set for the qcom,sc8280xp-tlmm pinctrl driver. The
pinctrl driver doesn't define one, so of_gpiochip_add() should
automatically setup of_gpio_simple_xlate() on it's behalf. This doesn't
happen since the fwnode member on the struct gpiochip is set to null
when of_gpiochip_add() is called. Let's work around this by ensuring
that it's set if available.

Note that this broke sometime within the last few weeks within
linux-next and I haven't bisected this. I'm posting this in the hopes
that someone may know offhand which patch(es) may have broken this.

Signed-off-by: Brian Masney <bmasney@redhat.com>
---
 drivers/gpio/gpiolib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 11fb7ec883e9..8bec66008869 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -678,7 +678,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 	 * Assign fwnode depending on the result of the previous calls,
 	 * if none of them succeed, assign it to the parent's one.
 	 */
-	gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
+	gc->fwnode = gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
 
 	gdev->id = ida_alloc(&gpio_ida, GFP_KERNEL);
 	if (gdev->id < 0) {
-- 
2.38.1


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

end of thread, other threads:[~2022-11-16 11:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-14 20:29 [PATCH RFC] gpiolib: ensure that fwnode is properly set Brian Masney
2022-11-14 21:02 ` Robert Marko
2022-11-14 21:16   ` Brian Masney
2022-11-15  8:18   ` Shazad Hussain
2022-11-15 11:08 ` Marijn Suijten
2022-11-15 11:53 ` Konrad Dybcio
2022-11-15 17:07 ` Bryan O'Donoghue
2022-11-15 22:02   ` Steev Klimaszewski
2022-11-16  9:19     ` Bartosz Golaszewski
2022-11-16 10:23     ` Thierry Reding
2022-11-16  9:09 ` Neil Armstrong
2022-11-16 10:21 ` Thierry Reding
2022-11-16 10:35   ` Thierry Reding
2022-11-16 11:14   ` Brian Masney

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.