提交 624ab2a4 编写于 作者: F Frank Rowand 提交者: Rob Herring

of: Update structure of code to be clearer, also remove BUG_ON()

Remove BUG_ON(), which is frowned upon and not needed here.
Restructure to remove some excessive complexity.
Signed-off-by: NFrank Rowand <frank.rowand@am.sony.com>
Signed-off-by: NRob Herring <robh@kernel.org>
上级 25e16877
...@@ -136,8 +136,8 @@ static int update_usages_of_a_phandle_reference(struct device_node *overlay, ...@@ -136,8 +136,8 @@ static int update_usages_of_a_phandle_reference(struct device_node *overlay,
err = -EINVAL; err = -EINVAL;
goto err_fail; goto err_fail;
} }
*s++ = '\0'; *s++ = '\0';
err = kstrtoint(s, 10, &offset); err = kstrtoint(s, 10, &offset);
if (err) if (err)
goto err_fail; goto err_fail;
...@@ -219,11 +219,9 @@ static int adjust_local_phandle_references(struct device_node *local_fixups, ...@@ -219,11 +219,9 @@ static int adjust_local_phandle_references(struct device_node *local_fixups,
if (off >= prop->length || (off + 4) > prop->length) if (off >= prop->length || (off + 4) > prop->length)
return -EINVAL; return -EINVAL;
if (phandle_delta) { phandle = be32_to_cpu(*(__be32 *)(prop->value + off));
phandle = be32_to_cpu(*(__be32 *)(prop->value + off)); phandle += phandle_delta;
phandle += phandle_delta; *(__be32 *)(prop->value + off) = cpu_to_be32(phandle);
*(__be32 *)(prop->value + off) = cpu_to_be32(phandle);
}
} }
} }
...@@ -267,48 +265,36 @@ int of_resolve_phandles(struct device_node *overlay) ...@@ -267,48 +265,36 @@ int of_resolve_phandles(struct device_node *overlay)
phandle phandle, phandle_delta; phandle phandle, phandle_delta;
int err; int err;
if (!overlay) if (!overlay) {
pr_err("%s: null overlay\n", __func__); pr_err("null overlay\n");
if (overlay && !of_node_check_flag(overlay, OF_DETACHED)) return -EINVAL;
pr_err("%s: node %s not detached\n", __func__, }
overlay->full_name); if (!of_node_check_flag(overlay, OF_DETACHED)) {
if (!overlay || !of_node_check_flag(overlay, OF_DETACHED)) pr_err("overlay not detached\n");
return -EINVAL; return -EINVAL;
}
phandle_delta = live_tree_max_phandle() + 1; phandle_delta = live_tree_max_phandle() + 1;
adjust_overlay_phandles(overlay, phandle_delta); adjust_overlay_phandles(overlay, phandle_delta);
local_fixups = NULL;
for_each_child_of_node(overlay, local_fixups) for_each_child_of_node(overlay, local_fixups)
if (!of_node_cmp(local_fixups->name, "__local_fixups__")) if (!of_node_cmp(local_fixups->name, "__local_fixups__"))
break; break;
if (local_fixups != NULL) { err = adjust_local_phandle_references(local_fixups, overlay, phandle_delta);
err = adjust_local_phandle_references(local_fixups, if (err)
overlay, 0); return err;
if (err)
return err;
BUG_ON(adjust_local_phandle_references(local_fixups,
overlay, phandle_delta));
}
tree_symbols = NULL;
overlay_symbols = NULL; overlay_symbols = NULL;
overlay_fixups = NULL; overlay_fixups = NULL;
tree_symbols = of_find_node_by_path("/__symbols__"); tree_symbols = of_find_node_by_path("/__symbols__");
for_each_child_of_node(overlay, child) { for_each_child_of_node(overlay, child) {
if (!of_node_cmp(child->name, "__symbols__"))
if (!overlay_symbols && !of_node_cmp(child->name, "__symbols__"))
overlay_symbols = child; overlay_symbols = child;
if (!of_node_cmp(child->name, "__fixups__"))
if (!overlay_fixups && !of_node_cmp(child->name, "__fixups__"))
overlay_fixups = child; overlay_fixups = child;
if (overlay_symbols && overlay_fixups)
break;
} }
if (!overlay_fixups) { if (!overlay_fixups) {
...@@ -317,7 +303,7 @@ int of_resolve_phandles(struct device_node *overlay) ...@@ -317,7 +303,7 @@ int of_resolve_phandles(struct device_node *overlay)
} }
if (!tree_symbols) { if (!tree_symbols) {
pr_err("%s: no symbols in root of device tree.\n", __func__); pr_err("no symbols in root of device tree.\n");
err = -EINVAL; err = -EINVAL;
goto out; goto out;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册