Browse Source

checks: Warn on node name unit-addresses with '0x' or leading 0s

Node name unit-addresses should generally never begin with 0x or leading
0s. Add warnings to check for these cases, but only for nodes without a
known bus type as there should be better bus specific checks of the
unit address in those cases. Any unit addresses that don't follow the
general rule will need to add a new bus type. There aren't any known
ones ATM.

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
Rob Herring 8 years ago committed by David Gibson
parent
commit
cdbb2b6c7a
  1. 25
      checks.c
  2. 2
      tests/run_tests.sh
  3. 12
      tests/unit-addr-leading-0s.dts
  4. 12
      tests/unit-addr-leading-0x.dts

25
checks.c

@ -880,6 +880,30 @@ static void check_simple_bus_reg(struct check *c, struct dt_info *dti, struct no @@ -880,6 +880,30 @@ static void check_simple_bus_reg(struct check *c, struct dt_info *dti, struct no
}
WARNING(simple_bus_reg, check_simple_bus_reg, NULL, &reg_format, &simple_bus_bridge);

static void check_unit_address_format(struct check *c, struct dt_info *dti,
struct node *node)
{
const char *unitname = get_unitname(node);

if (node->parent && node->parent->bus)
return;

if (!unitname[0])
return;

if (!strncmp(unitname, "0x", 2)) {
FAIL(c, dti, "Node %s unit name should not have leading \"0x\"",
node->fullpath);
/* skip over 0x for next test */
unitname += 2;
}
if (unitname[0] == '0' && isxdigit(unitname[1]))
FAIL(c, dti, "Node %s unit name should not have leading 0s",
node->fullpath);
}
WARNING(unit_address_format, check_unit_address_format, NULL,
&node_name_format, &pci_bridge, &simple_bus_bridge);

/*
* Style checks
*/
@ -951,6 +975,7 @@ static struct check *check_table[] = { @@ -951,6 +975,7 @@ static struct check *check_table[] = {
&addr_size_cells, &reg_format, &ranges_format,

&unit_address_vs_reg,
&unit_address_format,

&pci_bridge,
&pci_device_reg,

2
tests/run_tests.sh

@ -540,6 +540,8 @@ dtc_tests () { @@ -540,6 +540,8 @@ dtc_tests () {
check_tests obsolete-chosen-interrupt-controller.dts obsolete_chosen_interrupt_controller
check_tests reg-without-unit-addr.dts unit_address_vs_reg
check_tests unit-addr-without-reg.dts unit_address_vs_reg
check_tests unit-addr-leading-0x.dts unit_address_format
check_tests unit-addr-leading-0s.dts unit_address_format
run_sh_test dtc-checkfails.sh node_name_chars -- -I dtb -O dtb bad_node_char.dtb
run_sh_test dtc-checkfails.sh node_name_format -- -I dtb -O dtb bad_node_format.dtb
run_sh_test dtc-checkfails.sh prop_name_chars -- -I dtb -O dtb bad_prop_char.dtb

12
tests/unit-addr-leading-0s.dts

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
/dts-v1/;

/ {
#address-cells = <1>;
#size-cells = <1>;

bus {
node@001 {
reg = <1 0>;
};
};
};

12
tests/unit-addr-leading-0x.dts

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
/dts-v1/;

/ {
#address-cells = <1>;
#size-cells = <1>;

bus {
node@0x1 {
reg = <1 0>;
};
};
};
Loading…
Cancel
Save