From: Przemyslaw Marczak
Date: Wed, 30 Sep 2015 11:14:50 +0000 (+0200)
Subject: fdtdec: fix parsing 'reg' property with zero value in '#size-cells'
X-Git-Tag: v2015.10-rc5~45^2~3
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ff0a6358b674a7791ecd120034f4a30d227d3ec7;p=oweals%2Fu-boot.git
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
Acked-by: Stephen Warren
Acked-by: Simon Glass
Tested-by: Simon Glass
---
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 1fdb4f0d9c..1a86369934 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -149,7 +149,7 @@ fdt_addr_t fdtdec_get_addr_size_auto_parent(const void *blob, int parent,
}
ns = fdt_size_cells(blob, parent);
- if (ns < 1) {
+ if (ns < 0) {
debug("(bad #size-cells)\n");
return FDT_ADDR_T_NONE;
}