Browse Source

dtc: Strip redundant "name" properties

If an input device tree has "name" properties which are correct, then
they are redundant (because they can be derived from the unit name).
Therefore, extend the checking code for correctness of "name"
properties to remove them if they are correct.  dtc will still insert
name properties in the output if that's of a sufficiently old version
to require them.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
David Gibson 17 years ago committed by Jon Loeliger
parent
commit
d028e84140
  1. 15
      checks.c

15
checks.c

@ -316,9 +316,14 @@ NODE_CHECK(explicit_phandles, NULL, ERROR); @@ -316,9 +316,14 @@ NODE_CHECK(explicit_phandles, NULL, ERROR);
static void check_name_properties(struct check *c, struct node *root,
struct node *node)
{
struct property *prop;
struct property **pp, *prop = NULL;

for (pp = &node->proplist; *pp; pp = &((*pp)->next))
if (streq((*pp)->name, "name")) {
prop = *pp;
break;
}

prop = get_property(node, "name");
if (!prop)
return; /* No name property, that's fine */

@ -326,6 +331,12 @@ static void check_name_properties(struct check *c, struct node *root, @@ -326,6 +331,12 @@ static void check_name_properties(struct check *c, struct node *root,
|| (memcmp(prop->val.val, node->name, node->basenamelen) != 0))
FAIL(c, "\"name\" property in %s is incorrect (\"%s\" instead"
" of base node name)", node->fullpath, prop->val.val);

/* The name property is correct, and therefore redundant. Delete it */
*pp = prop->next;
free(prop->name);
data_free(prop->val);
free(prop);
}
CHECK_IS_STRING(name_is_string, "name", ERROR);
NODE_CHECK(name_properties, NULL, ERROR, &name_is_string);

Loading…
Cancel
Save