* [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
@ 2026-09-10 14:16 Ernest Van Hoecke
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Ernest Van Hoecke @ 2026-09-10 14:16 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
This series fixes an fw_devlink supplier-resolution problem reported by
Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
resources routed through an LVDS connector. Consumers referencing the
nexus could remain deferred because fw_devlink linked them to the nexus
rather than to the providers selected by gpio-map and pwm-map. [1]
GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
to resolve specifiers through gpio-map, pwm-map and clock-map
properties. The corresponding fw_devlink parsers use direct phandle
parsing instead. Given a consumer which references a nexus, the consumer
API and fw_devlink therefore resolve the reference to different nodes:
consumer API: consumer -> nexus -> mapped provider
fw_devlink: consumer -> nexus
A nexus is a translation node rather than the resource provider and need
not have a driver. The link to it can consequently remain unresolved and
defer the consumer even though the mapped provider is available.
Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
resolver as their consumer APIs. The resolver also handles valid direct
references by returning the original provider when no map is present.
Use dedicated exact-name and suffix declaration macros to opt these
bindings into map-aware parsing without changing unrelated property
parsers. Retain GPIO's existing exclusions and compatibility handling.
The regression tests call the OF add_links operation and verify that a
mapped reference creates exactly one link to the final provider, not to
the nexus. They also cover valid direct references. The GPIO tests
exercise all property spellings recognized by fw_devlink, including the
deprecated singular and unprefixed forms.
Tested with:
- The new CONFIG_OF_UNITTEST fw_devlink cases under QEMU/x86_64 all
passed
- W=1 builds on x86_64 and arm64, including the OF unittest data
- Toradex Verdin iMX8M Plus hardware using a connector nexus for the
display GPIO and PWM resources: the display probes successfully
[1] https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
Changes in v2:
- Split the unit tests into per-resource follow-up commits
- Added clock nexus as well because the clock nexus series was merged:
https://lore.kernel.org/all/20260807-schneider-v7-2-rc1-eip201-upstream-v5-0-8785f9531cf0@bootlin.com/
- Link to v1: https://lore.kernel.org/r/20260902-fw-devlink-nexus-ready-v1-0-68fe1996e78a@toradex.com
---
Ernest Van Hoecke (7):
of: property: fw_devlink: Follow GPIO nexus maps
of: property: fw_devlink: Report unsupported supplier linking
of: unittest: Test fw_devlink with GPIO nexus maps
of: property: fw_devlink: Follow PWM nexus maps
of: unittest: Test fw_devlink with PWM nexus maps
of: property: fw_devlink: Follow clock nexus maps
of: unittest: Test fw_devlink with clock nexus maps
drivers/of/property.c | 53 ++++++++++++++-----
drivers/of/unittest-data/tests-phandle.dtsi | 63 +++++++++++++++++++++++
drivers/of/unittest.c | 79 +++++++++++++++++++++++++++++
3 files changed, 182 insertions(+), 13 deletions(-)
---
base-commit: 91b1b8d437abe0cd83210d8f257b785a63047aa9
change-id: 20260901-fw-devlink-nexus-ready-c859706b019d
Best regards,
--
Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO nexus maps
2026-09-10 14:16 [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
@ 2026-09-10 14:16 ` Ernest Van Hoecke
2026-09-11 7:51 ` Bartosz Golaszewski
` (2 more replies)
2026-09-10 14:16 ` [PATCH v2 4/7] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
2026-10-13 12:09 ` [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock " Frieder Schrempf
2 siblings, 3 replies; 9+ messages in thread
From: Ernest Van Hoecke @ 2026-09-10 14:16 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
GPIO consumers use of_parse_phandle_with_args_map() to resolve
specifiers through gpio-map properties. fw_devlink instead parses GPIO
properties as direct phandle references, so it records the nexus node as
the supplier rather than the mapped GPIO provider.
A nexus is a translation node, not the GPIO provider, and need not be
populated as a device. The resulting fwnode link can therefore remain
unresolved and indefinitely defer the consumer while
device_links_check_suppliers() waits for the nexus.
Use the map-aware parser for all supported GPIO property spellings. This
makes fw_devlink resolve the same provider as the GPIO consumer API.
Direct GPIO references continue to work because the map-aware parser
returns the original provider when no gpio-map property is present.
Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
drivers/of/property.c | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index 72cf12907de0..380df0861ab9 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1311,6 +1311,19 @@ static struct device_node *parse_prop_cells(struct device_node *np,
return sup_args.np;
}
+static struct device_node *parse_nexus_prop(struct device_node *np,
+ const char *prop_name, int index,
+ const char *stem_name)
+{
+ struct of_phandle_args sup_args;
+
+ if (of_parse_phandle_with_args_map(np, prop_name, stem_name, index,
+ &sup_args))
+ return NULL;
+
+ return sup_args.np;
+}
+
#define DEFINE_SIMPLE_PROP(fname, name, cells) \
static struct device_node *parse_##fname(struct device_node *np, \
const char *prop_name, int index) \
@@ -1361,6 +1374,15 @@ static struct device_node *parse_##fname(struct device_node *np, \
return parse_suffix_prop_cells(np, prop_name, index, suffix, cells); \
}
+#define DEFINE_SUFFIX_NEXUS_PROP(fname, suffix, stem) \
+static struct device_node *parse_##fname(struct device_node *np, \
+ const char *prop_name, int index) \
+{ \
+ if (!strends(prop_name, suffix)) \
+ return NULL; \
+ return parse_nexus_prop(np, prop_name, index, stem); \
+}
+
/**
* struct supplier_bindings - Property parsing functions for suppliers
*
@@ -1416,7 +1438,7 @@ DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL)
DEFINE_SIMPLE_PROP(mmc_pwrseq, "mmc-pwrseq", NULL)
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
-DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
+DEFINE_SUFFIX_NEXUS_PROP(gpio, "-gpio", "gpio")
static struct device_node *parse_pinctrl_n(struct device_node *np,
const char *prop_name, int index)
@@ -1436,8 +1458,10 @@ static struct device_node *parse_gpios(struct device_node *np,
if (strends(prop_name, ",nr-gpios"))
return NULL;
- return parse_suffix_prop_cells(np, prop_name, index, "-gpios",
- "#gpio-cells");
+ if (!strends(prop_name, "-gpios"))
+ return NULL;
+
+ return parse_nexus_prop(np, prop_name, index, "gpio");
}
static struct device_node *parse_iommu_maps(struct device_node *np,
@@ -1452,8 +1476,6 @@ static struct device_node *parse_iommu_maps(struct device_node *np,
static struct device_node *parse_gpio_compat(struct device_node *np,
const char *prop_name, int index)
{
- struct of_phandle_args sup_args;
-
if (strcmp(prop_name, "gpio") && strcmp(prop_name, "gpios"))
return NULL;
@@ -1464,11 +1486,7 @@ static struct device_node *parse_gpio_compat(struct device_node *np,
if (of_property_read_bool(np, "gpio-hog"))
return NULL;
- if (of_parse_phandle_with_args(np, prop_name, "#gpio-cells", index,
- &sup_args))
- return NULL;
-
- return sup_args.np;
+ return parse_nexus_prop(np, prop_name, index, "gpio");
}
static struct device_node *parse_interrupts(struct device_node *np,
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 4/7] of: property: fw_devlink: Follow PWM nexus maps
2026-09-10 14:16 [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
@ 2026-09-10 14:16 ` Ernest Van Hoecke
2026-09-16 17:52 ` Herve Codina
2026-10-13 12:09 ` [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock " Frieder Schrempf
2 siblings, 1 reply; 9+ messages in thread
From: Ernest Van Hoecke @ 2026-09-10 14:16 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
PWM consumers use of_parse_phandle_with_args_map() to resolve specifiers
through pwm-map properties. fw_devlink instead parses the pwms property
as a direct phandle reference, so it records the nexus node as the
supplier rather than the mapped PWM provider.
A nexus is a translation node, not the PWM provider, and need not be
populated as a device. The resulting fwnode link can therefore remain
unresolved and indefinitely defer the consumer while
device_links_check_suppliers() waits for the nexus.
Use the map-aware parser for pwms so fw_devlink resolves the same
provider as the PWM consumer API. Direct PWM references continue to work
because the map-aware parser returns the original provider when no
pwm-map property is present.
Fixes: e71e46a6f19c ("pwm: Add support for pwm nexus dt bindings")
Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
drivers/of/property.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/of/property.c b/drivers/of/property.c
index eba7e9fe6c38..a9c51d639a2b 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1331,6 +1331,15 @@ static struct device_node *parse_##fname(struct device_node *np, \
return parse_prop_cells(np, prop_name, index, name, cells); \
}
+#define DEFINE_SIMPLE_NEXUS_PROP(fname, name, stem) \
+static struct device_node *parse_##fname(struct device_node *np, \
+ const char *prop_name, int index) \
+{ \
+ if (strcmp(prop_name, name)) \
+ return NULL; \
+ return parse_nexus_prop(np, prop_name, index, stem); \
+}
+
/**
* parse_suffix_prop_cells - Suffix property parsing function for suppliers
*
@@ -1426,7 +1435,7 @@ DEFINE_SIMPLE_PROP(extcon, "extcon", NULL)
DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
-DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells")
+DEFINE_SIMPLE_NEXUS_PROP(pwms, "pwms", "pwm")
DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")
DEFINE_SIMPLE_PROP(leds, "leds", NULL)
DEFINE_SIMPLE_PROP(backlight, "backlight", NULL)
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO nexus maps
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
@ 2026-09-11 7:51 ` Bartosz Golaszewski
2026-09-16 17:14 ` Linus Walleij
2026-09-16 17:43 ` Herve Codina
2 siblings, 0 replies; 9+ messages in thread
From: Bartosz Golaszewski @ 2026-09-11 7:51 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable, Rob Herring,
Saravana Kannan
On Thu, 10 Sep 2026 16:16:42 +0200, Ernest Van Hoecke
<ernestvanhoecke@gmail.com> said:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> GPIO consumers use of_parse_phandle_with_args_map() to resolve
> specifiers through gpio-map properties. fw_devlink instead parses GPIO
> properties as direct phandle references, so it records the nexus node as
> the supplier rather than the mapped GPIO provider.
>
> A nexus is a translation node, not the GPIO provider, and need not be
> populated as a device. The resulting fwnode link can therefore remain
> unresolved and indefinitely defer the consumer while
> device_links_check_suppliers() waits for the nexus.
>
> Use the map-aware parser for all supported GPIO property spellings. This
> makes fw_devlink resolve the same provider as the GPIO consumer API.
> Direct GPIO references continue to work because the map-aware parser
> returns the original provider when no gpio-map property is present.
>
> Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
> Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
> Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
> Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO nexus maps
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
2026-09-11 7:51 ` Bartosz Golaszewski
@ 2026-09-16 17:14 ` Linus Walleij
2026-09-16 17:43 ` Herve Codina
2 siblings, 0 replies; 9+ messages in thread
From: Linus Walleij @ 2026-09-16 17:14 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
On Thu, Sep 10, 2026 at 4:16 PM Ernest Van Hoecke
<ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> GPIO consumers use of_parse_phandle_with_args_map() to resolve
> specifiers through gpio-map properties. fw_devlink instead parses GPIO
> properties as direct phandle references, so it records the nexus node as
> the supplier rather than the mapped GPIO provider.
>
> A nexus is a translation node, not the GPIO provider, and need not be
> populated as a device. The resulting fwnode link can therefore remain
> unresolved and indefinitely defer the consumer while
> device_links_check_suppliers() waits for the nexus.
>
> Use the map-aware parser for all supported GPIO property spellings. This
> makes fw_devlink resolve the same provider as the GPIO consumer API.
> Direct GPIO references continue to work because the map-aware parser
> returns the original provider when no gpio-map property is present.
>
> Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
> Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
> Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
> Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO nexus maps
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
2026-09-11 7:51 ` Bartosz Golaszewski
2026-09-16 17:14 ` Linus Walleij
@ 2026-09-16 17:43 ` Herve Codina
2 siblings, 0 replies; 9+ messages in thread
From: Herve Codina @ 2026-09-16 17:43 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
Hi Ernest,
On Thu, 10 Sep 2026 16:16:42 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> GPIO consumers use of_parse_phandle_with_args_map() to resolve
> specifiers through gpio-map properties. fw_devlink instead parses GPIO
> properties as direct phandle references, so it records the nexus node as
> the supplier rather than the mapped GPIO provider.
>
> A nexus is a translation node, not the GPIO provider, and need not be
> populated as a device. The resulting fwnode link can therefore remain
> unresolved and indefinitely defer the consumer while
> device_links_check_suppliers() waits for the nexus.
>
> Use the map-aware parser for all supported GPIO property spellings. This
> makes fw_devlink resolve the same provider as the GPIO consumer API.
> Direct GPIO references continue to work because the map-aware parser
> returns the original provider when no gpio-map property is present.
>
> Fixes: 7f00be96f125 ("of: property: Add device link support for interrupt-parent, dmas and -gpio(s)")
> Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
> Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
> Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> drivers/of/property.c | 38 ++++++++++++++++++++++++++++----------
> 1 file changed, 28 insertions(+), 10 deletions(-)
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 4/7] of: property: fw_devlink: Follow PWM nexus maps
2026-09-10 14:16 ` [PATCH v2 4/7] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
@ 2026-09-16 17:52 ` Herve Codina
0 siblings, 0 replies; 9+ messages in thread
From: Herve Codina @ 2026-09-16 17:52 UTC (permalink / raw)
To: Ernest Van Hoecke
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
Hi Ernest,
On Thu, 10 Sep 2026 16:16:45 +0200
Ernest Van Hoecke <ernestvanhoecke@gmail.com> wrote:
> From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> PWM consumers use of_parse_phandle_with_args_map() to resolve specifiers
> through pwm-map properties. fw_devlink instead parses the pwms property
> as a direct phandle reference, so it records the nexus node as the
> supplier rather than the mapped PWM provider.
>
> A nexus is a translation node, not the PWM provider, and need not be
> populated as a device. The resulting fwnode link can therefore remain
> unresolved and indefinitely defer the consumer while
> device_links_check_suppliers() waits for the nexus.
>
> Use the map-aware parser for pwms so fw_devlink resolves the same
> provider as the PWM consumer API. Direct PWM references continue to work
> because the map-aware parser returns the original provider when no
> pwm-map property is present.
>
> Fixes: e71e46a6f19c ("pwm: Add support for pwm nexus dt bindings")
> Reported-by: Leonardo Costa <leonardo.costa@toradex.com>
> Link: https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
> Tested-by: Leonardo Costa <leonardo.costa@toradex.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
> ---
> drivers/of/property.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-09-10 14:16 [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
2026-09-10 14:16 ` [PATCH v2 4/7] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
@ 2026-10-13 12:09 ` Frieder Schrempf
2026-10-13 12:49 ` Ernest Van Hoecke
2 siblings, 1 reply; 9+ messages in thread
From: Frieder Schrempf @ 2026-10-13 12:09 UTC (permalink / raw)
To: Ernest Van Hoecke, Rob Herring, Saravana Kannan
Cc: Miquel Raynal (Schneider Electric), Frank Li, Kieran Bingham,
Pengutronix Kernel Team, Stephen Boyd, Brian Masney,
Linus Walleij, Bartosz Golaszewski, Uwe Kleine-König,
Herve Codina, Greg Kroah-Hartman, Geert Uytterhoeven,
Leonardo Costa, devicetree, linux-clk, linux-gpio, linux-pwm,
linux-kernel, Ernest Van Hoecke, stable
Hi Ernest,
On 10.09.26 16:16, Ernest Van Hoecke wrote:
> This series fixes an fw_devlink supplier-resolution problem reported by
> Leonardo Costa while using a Devicetree nexus to describe GPIO and PWM
> resources routed through an LVDS connector. Consumers referencing the
> nexus could remain deferred because fw_devlink linked them to the nexus
> rather than to the providers selected by gpio-map and pwm-map. [1]
>
> GPIO, PWM and clock consumer APIs use of_parse_phandle_with_args_map()
> to resolve specifiers through gpio-map, pwm-map and clock-map
> properties. The corresponding fw_devlink parsers use direct phandle
> parsing instead. Given a consumer which references a nexus, the consumer
> API and fw_devlink therefore resolve the reference to different nodes:
>
> consumer API: consumer -> nexus -> mapped provider
> fw_devlink: consumer -> nexus
>
> A nexus is a translation node rather than the resource provider and need
> not have a driver. The link to it can consequently remain unresolved and
> defer the consumer even though the mapped provider is available.
>
> Make the fw_devlink GPIO, PWM and clock parsers use the same map-aware
> resolver as their consumer APIs. The resolver also handles valid direct
> references by returning the original provider when no map is present.
> Use dedicated exact-name and suffix declaration macros to opt these
> bindings into map-aware parsing without changing unrelated property
> parsers. Retain GPIO's existing exclusions and compatibility handling.
>
> The regression tests call the OF add_links operation and verify that a
> mapped reference creates exactly one link to the final provider, not to
> the nexus. They also cover valid direct references. The GPIO tests
> exercise all property spellings recognized by fw_devlink, including the
> deprecated singular and unprefixed forms.
>
> Tested with:
> - The new CONFIG_OF_UNITTEST fw_devlink cases under QEMU/x86_64 all
> passed
> - W=1 builds on x86_64 and arm64, including the OF unittest data
> - Toradex Verdin iMX8M Plus hardware using a connector nexus for the
> display GPIO and PWM resources: the display probes successfully
>
> [1] https://lore.kernel.org/all/juuc4af7ndbajcl7gzf4tg5qz2q2j5tt3rvql4jbauradujrre@gc5nbdhhixaf/
>
> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
What is the status of this? Can you send a follow-up?
Frank is asking me to use nexus connector nodes and it looks like I will
run into this issue.
Thanks
Frieder
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps
2026-10-13 12:09 ` [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock " Frieder Schrempf
@ 2026-10-13 12:49 ` Ernest Van Hoecke
0 siblings, 0 replies; 9+ messages in thread
From: Ernest Van Hoecke @ 2026-10-13 12:49 UTC (permalink / raw)
To: Frieder Schrempf
Cc: Rob Herring, Saravana Kannan, Miquel Raynal (Schneider Electric),
Frank Li, Kieran Bingham, Pengutronix Kernel Team, Stephen Boyd,
Brian Masney, Linus Walleij, Bartosz Golaszewski,
Uwe Kleine-König, Herve Codina, Greg Kroah-Hartman,
Geert Uytterhoeven, Leonardo Costa, devicetree, linux-clk,
linux-gpio, linux-pwm, linux-kernel, Ernest Van Hoecke, stable
On Tue, Oct 13, 2026 at 02:09:37PM +0200, Frieder Schrempf wrote:
> Hi Ernest,
>
> On 10.09.26 16:16, Ernest Van Hoecke wrote:
> > [...]
> What is the status of this? Can you send a follow-up?
>
> Frank is asking me to use nexus connector nodes and it looks like I will
> run into this issue.
>
> Thanks
> Frieder
Hi Frieder,
I'll be sending a follow up very soon and address all the valuable
feedback I got here. Thanks for your interest!
Apologies for the delay, it's been quite busy here, but I also had some
nice chats about the topic at ELC 2026 last week so I'll follow up soon.
Kind regards,
Ernest
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-13 12:49 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-10 14:16 [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock nexus maps Ernest Van Hoecke
2026-09-10 14:16 ` [PATCH v2 1/7] of: property: fw_devlink: Follow GPIO " Ernest Van Hoecke
2026-09-11 7:51 ` Bartosz Golaszewski
2026-09-16 17:14 ` Linus Walleij
2026-09-16 17:43 ` Herve Codina
2026-09-10 14:16 ` [PATCH v2 4/7] of: property: fw_devlink: Follow PWM " Ernest Van Hoecke
2026-09-16 17:52 ` Herve Codina
2026-10-13 12:09 ` [PATCH v2 0/7] of: property: Make fw_devlink follow GPIO, PWM and clock " Frieder Schrempf
2026-10-13 12:49 ` Ernest Van Hoecke
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox