Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 624ab2a4 authored by Frank Rowand's avatar Frank Rowand Committed by Rob Herring
Browse files

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: default avatarFrank Rowand <frank.rowand@am.sony.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 25e16877
Loading
Loading
Loading
Loading
+17 −31
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ static int update_usages_of_a_phandle_reference(struct device_node *overlay,
			err = -EINVAL;
			goto err_fail;
		}

		*s++ = '\0';

		err = kstrtoint(s, 10, &offset);
		if (err)
			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)
				return -EINVAL;

			if (phandle_delta) {
			phandle = be32_to_cpu(*(__be32 *)(prop->value + off));
			phandle += phandle_delta;
			*(__be32 *)(prop->value + off) = cpu_to_be32(phandle);
		}
	}
	}

	for_each_child_of_node(local_fixups, child) {

@@ -267,48 +265,36 @@ int of_resolve_phandles(struct device_node *overlay)
	phandle phandle, phandle_delta;
	int err;

	if (!overlay)
		pr_err("%s: null overlay\n", __func__);
	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))
	if (!overlay) {
		pr_err("null overlay\n");
		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;
	adjust_overlay_phandles(overlay, phandle_delta);

	local_fixups = NULL;
	for_each_child_of_node(overlay, local_fixups)
		if (!of_node_cmp(local_fixups->name, "__local_fixups__"))
			break;

	if (local_fixups != NULL) {
		err = adjust_local_phandle_references(local_fixups,
				overlay, 0);
	err = adjust_local_phandle_references(local_fixups, overlay, phandle_delta);
	if (err)
		return err;

		BUG_ON(adjust_local_phandle_references(local_fixups,
				overlay, phandle_delta));
	}

	tree_symbols = NULL;
	overlay_symbols = NULL;
	overlay_fixups = NULL;

	tree_symbols = of_find_node_by_path("/__symbols__");

	for_each_child_of_node(overlay, child) {

		if (!overlay_symbols && !of_node_cmp(child->name, "__symbols__"))
		if (!of_node_cmp(child->name, "__symbols__"))
			overlay_symbols = child;

		if (!overlay_fixups && !of_node_cmp(child->name, "__fixups__"))
		if (!of_node_cmp(child->name, "__fixups__"))
			overlay_fixups = child;

		if (overlay_symbols && overlay_fixups)
			break;
	}

	if (!overlay_fixups) {
@@ -317,7 +303,7 @@ int of_resolve_phandles(struct device_node *overlay)
	}

	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;
		goto out;
	}