
On 09/24/2015 09:29 AM, Przemyslaw Marczak wrote:
After rework of lib/fdtdec.c by commit:
commit 02464e386bb5f0a022c121f95ae75cf583759d95 Author: Stephen Warren swarren@nvidia.com Date: Thu Aug 6 15:31:02 2015 -0600
That'd usually be abbreviated as:
Commit 02464e386bb5 "fdt: add new fdt address parsing functions".
Of course, if you want to shame me that's justified too:-) Tracking down regressions sucks:-(
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.
"are equal to" should be "is at least"; the purpose of that rework was to support values greater than one.
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.
Sorry about that. This patch,
Acked-by: Stephen Warren swarren@nvidia.com
(but not tested, but since this allows a previously failing case, it's hard to see how this patch could cause any problems.)