[PATCH RFC] gpio: Fix probing of gpio-hogs

Chris Webb chris at arachsys.com
Thu Jun 13 12:59:05 CEST 2024


48b3ecbe replumbed the gpio-hog probing to use DM_FLAG_PROBE_AFTER_BIND.

Unfortunately gpio_post_bind is called after the non-preloc recursive
dm_probe_devices completes, so setting this flag does not have the intended
effect and the gpio-hogs never get probed. With instrumentation:

  [...]
  CPU:   MediaTek MT7981
  Model: GL.iNet GL-X3000
  DRAM:  512 MiB
  <mtk_pinctrl_mt7981_bind called>
  <dm_probe_devices called: root root_driver root_driver [+] [ ]>
  <dm_probe_devices called: clk fixed_clock gpt_dummy20m [ ] [ ]>
  [...]
  <dm_probe_devices called: led gpio_led signal-4 [ ] [ ]>
  Core:  34 devices, 14 uclasses, devicetree: separate
  MMC:   <gpio_post_bind called>
  mmc at 11230000: 0
  [...]

Probe them directly in gpio_post_bind instead.

Signed-off-by: Chris Webb <chris at arachsys.com>
---
 drivers/gpio/gpio-uclass.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 4234cd91..1c6e1715 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -1539,7 +1539,9 @@ static int gpio_post_bind(struct udevice *dev)
 				 * since hogs can be essential to the hardware
 				 * system.
 				 */
-				dev_or_flags(child, DM_FLAG_PROBE_AFTER_BIND);
+				ret = device_probe(child);
+				if (ret)
+					return ret;
 			}
 		}
 	}


More information about the U-Boot mailing list