[PATCH master 3/3] of: base: use default bus match table when populating /firmware
Ahmad Fatoum
a.fatoum at pengutronix.de
Thu Oct 15 01:48:31 PDT 2026
From: Ahmad Fatoum <a.fatoum at barebox.org>
This is an adoption of the corresponding Linux commit:
| commit 48e6a9c4a20870e09f85ff1a3628275d6bce31c0
| Author: Rob Herring (Arm) <robh at kernel.org>
| AuthorDate: Tue Jan 13 19:51:58 2026 -0600
|
| of: platform: Use default match table for /firmware
|
| Calling of_platform_populate() without a match table will only populate
| the immediate child nodes under /firmware. This is usually fine, but in
| the case of something like a "simple-mfd" node such as
| "raspberrypi,bcm2835-firmware", those child nodes will not be populated.
| And subsequent calls won't work either because the /firmware node is
| marked as processed already.
|
| Switch the call to of_platform_default_populate() to solve this problem.
| It should be a nop for existing cases.
|
| Fixes: 3aa0582fdb82 ("of: platform: populate /firmware/ node from of_platform_default_populate_init()")
| Cc: stable at vger.kernel.org
| Reviewed-by: Sudeep Holla <sudeep.holla at arm.com>
| Link: https://patch.msgid.link/20260114015158.692170-2-robh@kernel.org
| Signed-off-by: Rob Herring (Arm) <robh at kernel.org>
This change becomes necessary with the dts sync to Linux v7.1-rc1 in
commit 9eb4ad3c0b8c ("dts: update to v7.1-rc1"), which pulled in Linux
commits:
- 5e3bfd609ffd ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes
to root level")
- 0acb1de2b4df ("arm64: dts: broadcom: bcm2712: Move non simple-bus nodes to
root level").
On all Raspberry Pi device trees the "raspberrypi,bcm2835-firmware", "simple-mfd"
node moved from /soc/firmware (below a simple-bus, populated recursively) to
/firmware/rpi-firmware. Its clocks, power, gpio and reset children are
no longer populated.
Fixes: cb667b97c663 ("of: populate "/firmware" while populating device tree")
Assisted-by: Claude:opus-5.5
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
drivers/of/base.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 194888359345..81aa69391692 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -3034,7 +3034,7 @@ int of_probe(void)
node = of_find_node_by_path("/firmware");
if (node)
- of_platform_populate(node, NULL, NULL);
+ of_platform_populate(node, of_default_bus_match_table, NULL);
of_platform_populate(root_node, of_default_bus_match_table, NULL);
--
2.47.3
More information about the barebox
mailing list