From fc86cb94272b82e4160036b523bb9fd48103a0fa Mon Sep 17 00:00:00 2001 From: GUI <39894654+GuEe-GUI@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:28:04 +0800 Subject: [PATCH] [DM/Platform] Fixup the node will probe more than once If a node request a new node or it's parent node. the request's node will probe a double time. So we check the device object of node in ofw probe entry and ofw probe child exit. --- components/drivers/core/platform_ofw.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/components/drivers/core/platform_ofw.c b/components/drivers/core/platform_ofw.c index 1b1aa2733a..dbe091935e 100644 --- a/components/drivers/core/platform_ofw.c +++ b/components/drivers/core/platform_ofw.c @@ -117,6 +117,12 @@ static rt_err_t platform_ofw_device_probe_once(struct rt_ofw_node *parent_np) struct rt_ofw_node_id *id; struct rt_ofw_prop *compat_prop = RT_NULL; + if (np->dev) + { + /* Check first */ + continue; + } + LOG_D("%s found in %s", np->full_name, parent_np->full_name); /* Is system node or have driver */ @@ -151,6 +157,12 @@ static rt_err_t platform_ofw_device_probe_once(struct rt_ofw_node *parent_np) } } + if (np->dev) + { + /* Maybe the childs have requested this node */ + continue; + } + pdev = alloc_ofw_platform_device(np); if (!pdev)