diff options
author | Patrice Chotard <patrice.chotard@foss.st.com> | 2022-01-04 10:42:48 +0300 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2022-01-25 22:36:10 +0300 |
commit | 9876ae7db6da1cf8e106fcb46a36172fbb5781e5 (patch) | |
tree | e9112bb9b1a6f541c3d55536ab6ad0cc9c856d32 /include | |
parent | a77f468099be81bdadb872a735f58ae5c2fa5973 (diff) | |
download | u-boot-9876ae7db6da1cf8e106fcb46a36172fbb5781e5.tar.xz |
dm: Fix OF_BAD_ADDR definition
When OF_LIVE flag is enabled on a 64 bits platform, there is an
issue when dev_read_addr() is called and need to perform an address
translation using __of_translate_address().
In case of error, __of_translate_address() return's value is OF_BAD_ADDR
(wich is defined in include/dm/of.h to ((u64)-1) = 0xffffffffffffffff).
The return value of dev_read_addr() is often compared to FDT_ADDR_T_NONE
which is defined as (-1U) = 0xffffffff.
In this case the comparison is always false.
To fix this issue, define FDT_ADDR_T_NONE to (ulong)(-1) in case of
AARCH64. Update accordingly related tests.
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/fdtdec.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/fdtdec.h b/include/fdtdec.h index 9a7b6a7ee1..4b0b505773 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -24,16 +24,19 @@ typedef phys_addr_t fdt_addr_t; typedef phys_size_t fdt_size_t; -#define FDT_ADDR_T_NONE (-1U) #define FDT_SIZE_T_NONE (-1U) #ifdef CONFIG_PHYS_64BIT +#define FDT_ADDR_T_NONE ((ulong)(-1)) + #define fdt_addr_to_cpu(reg) be64_to_cpu(reg) #define fdt_size_to_cpu(reg) be64_to_cpu(reg) #define cpu_to_fdt_addr(reg) cpu_to_be64(reg) #define cpu_to_fdt_size(reg) cpu_to_be64(reg) typedef fdt64_t fdt_val_t; #else +#define FDT_ADDR_T_NONE (-1U) + #define fdt_addr_to_cpu(reg) be32_to_cpu(reg) #define fdt_size_to_cpu(reg) be32_to_cpu(reg) #define cpu_to_fdt_addr(reg) cpu_to_be32(reg) |