Commit ff0a6358b674a7791ecd120034f4a30d227d3ec7

Authored by Przemyslaw Marczak
Committed by Simon Glass
1 parent d93b9a0709

fdtdec: fix parsing 'reg' property with zero value in '#size-cells'

After rework of lib/fdtdec.c by:

commit: 02464e3 fdt: add new fdt address parsing functions

the function fdtdec_get_addr() doesn't work as previous,
because the implementation assumes that properties '#address-cells'
and '#size-cells' are equal to 1, which can be not true sometimes.

The new API introduced fdtdec_get_addr_size_auto_parent() for the 'reg'
property parsing, but the implementation assumes, that #size-cells
can't be less than 1.

This causes that the following children's 'reg' property can't be reached:

parent@0x0 {
     #address-cells = <1>;
     #size-cells = <0>;
     children@0x100 {
         reg = < 0x100 >;
     };
};

Change the condition value from '1' to '0', which allows parsing property
with at least zero #size-cells, fixes the issue.

Now, fdtdec_get_addr_size_auto_parent() works properly.

Tested on: Odroid U3/X2, Trats, Trats2, Odroid XU3, Snow (by Simon).

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

... ... @@ -149,7 +149,7 @@
149 149 }
150 150  
151 151 ns = fdt_size_cells(blob, parent);
152   - if (ns < 1) {
  152 + if (ns < 0) {
153 153 debug("(bad #size-cells)\n");
154 154 return FDT_ADDR_T_NONE;
155 155 }