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: Frank Rowand <frank.rowand@am.sony.com> Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Родитель
25e1687767
Коммит
624ab2a49c
|
@ -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,13 +219,11 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for_each_child_of_node(local_fixups, child) {
|
for_each_child_of_node(local_fixups, child) {
|
||||||
|
|
||||||
|
@ -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))
|
|
||||||
pr_err("%s: node %s not detached\n", __func__,
|
|
||||||
overlay->full_name);
|
|
||||||
if (!overlay || !of_node_check_flag(overlay, OF_DETACHED))
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
if (!of_node_check_flag(overlay, OF_DETACHED)) {
|
||||||
|
pr_err("overlay not detached\n");
|
||||||
|
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,
|
|
||||||
overlay, 0);
|
|
||||||
if (err)
|
if (err)
|
||||||
return 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче