From: Ahmad Fatoum <[email protected]> This is an adoption of the corresponding Linux commit:
| commit 48e6a9c4a20870e09f85ff1a3628275d6bce31c0 | Author: Rob Herring (Arm) <[email protected]> | 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: [email protected] | Reviewed-by: Sudeep Holla <[email protected]> | Link: https://patch.msgid.link/[email protected] | Signed-off-by: Rob Herring (Arm) <[email protected]> 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 <[email protected]> --- 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
