@@ -1608,6 +1608,8 @@ static void rproc_crash_handler_work(struct work_struct *work)
static int rproc_platform_populate(struct rproc *rproc)
{
struct device *dev = rproc->dev.parent;
+ struct device_node *node = dev->of_node;
+ struct device_node *child_np;
int ret;
ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
@@ -1617,6 +1619,19 @@ static int rproc_platform_populate(struct rproc *rproc)
goto depopulate;
}
+ child_np = of_get_next_available_child(node, NULL);
+
+ while (child_np) {
+ of_node_get(node);
+ component_match_add_release(dev, &rproc->match,
+ rproc_release_of, rproc_compare_of,
+ child_np);
+ child_np = of_get_next_available_child(node, child_np);
+ }
+
+ if (!rproc->match)
+ dev_dbg(dev, "No available child\n");
+
return 0;
depopulate:
Add the components, associated to the child devices populated, in the match list for synchronization relying on bind/unbind mechanism. Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com> --- drivers/remoteproc/remoteproc_core.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)