On Fri, Feb 10, 2017 at 10:47:16AM -0600, Rob Herring wrote: > Node name unit-addresses should never begin with 0x or leading 0s > regardless of whether they have a bus specific address (i.e. one with > commas) or not. Add warnings to check for these cases. > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > --- > v2: > - Split into separate check from unit_address_vs_reg I'm still not thrilled with applying this test unconditionally - especially when 4/4 introduces pretty much exactly the infrastructure to do this better. If you add a unit name formatter function to the bus_type structure you really can then extend unit_address_vs_reg to verify them against each other, which will cover this as well more subtle mismatches. Obviously it would only do it for known bus types - but adding a "simple-bus" type would cover a lot of the cases, and a few for i2c and spi would cover most of the rest. > > checks.c | 21 +++++++++++++++++++++ > tests/run_tests.sh | 2 ++ > tests/unit-addr-leading-0s.dts | 10 ++++++++++ > tests/unit-addr-leading-0x.dts | 10 ++++++++++ > 4 files changed, 43 insertions(+) > create mode 100644 tests/unit-addr-leading-0s.dts > create mode 100644 tests/unit-addr-leading-0x.dts > > diff --git a/checks.c b/checks.c > index 67237ffe594e..16d17d20caec 100644 > --- a/checks.c > +++ b/checks.c > @@ -296,6 +296,26 @@ static void check_unit_address_vs_reg(struct check *c, struct dt_info *dti, > } > WARNING(unit_address_vs_reg, check_unit_address_vs_reg, NULL); > > +static void check_unit_address_format(struct check *c, struct dt_info *dti, > + struct node *node) > +{ > + const char *unitname = get_unitname(node); > + > + if (!unitname[0]) > + return; > + > + if (!strncmp(unitname, "0x", 2)) { > + FAIL(c, "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, "Node %s unit name should not have leading 0s", > + node->fullpath); > +} > +WARNING(unit_address_format, check_unit_address_format, NULL, &node_name_format); > + > static void check_property_name_chars(struct check *c, struct dt_info *dti, > struct node *node) > { > @@ -753,6 +773,7 @@ static struct check *check_table[] = { > &addr_size_cells, ®_format, &ranges_format, > > &unit_address_vs_reg, > + &unit_address_format, > > &avoid_default_addr_size, > &obsolete_chosen_interrupt_controller, > diff --git a/tests/run_tests.sh b/tests/run_tests.sh > index ed489dbdd269..0f5c3db79b80 100755 > --- a/tests/run_tests.sh > +++ b/tests/run_tests.sh > @@ -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 > diff --git a/tests/unit-addr-leading-0s.dts b/tests/unit-addr-leading-0s.dts > new file mode 100644 > index 000000000000..7c8e2cebbc84 > --- /dev/null > +++ b/tests/unit-addr-leading-0s.dts > @@ -0,0 +1,10 @@ > +/dts-v1/; > + > +/ { > + #address-cells = <1>; > + #size-cells = <1>; > + > + node@001 { > + reg = <1 0>; > + }; > +}; > diff --git a/tests/unit-addr-leading-0x.dts b/tests/unit-addr-leading-0x.dts > new file mode 100644 > index 000000000000..7ed7254e8dc2 > --- /dev/null > +++ b/tests/unit-addr-leading-0x.dts > @@ -0,0 +1,10 @@ > +/dts-v1/; > + > +/ { > + #address-cells = <1>; > + #size-cells = <1>; > + > + node@0x1 { > + reg = <1 0>; > + }; > +}; -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature