When using 32-bit addresses dtoc works correctly. For 64-bit addresses it does not since it ignores the #address-cells and #size-cells properties. Update the tool to use fdt64_t as the element type for reg properties when either the address or size is larger than one cell. Use the correct value so that C code can obtain the information from the device tree easily. Alos create a new type, fdt_val_t, which is defined to either fdt32_t or fdt64_t depending on the word size of the machine. This type corresponds to fdt_addr_t and fdt_size_t. Unfortunately we cannot just use those types since they are defined to phys_addr_t and phys_size_t which use 'unsigned long' in the 32-bit case, rather than 'unsigned int'. Add tests for the four combinations of address and size values (32/32, 64/64, 32/64, 64/32). Also update existing uses for rk3399 and rk3368 which now need to use the new fdt_val_t type. Signed-off-by: Simon Glass <sjg@chromium.org> Suggested-by: Heiko Stuebner <heiko@sntech.de> Reported-by: Kever Yang <kever.yang@rock-chips.com> |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| dtb_platdata.py | ||
| dtoc | ||
| dtoc.py | ||
| dtoc_test.dts | ||
| dtoc_test_addr32.dts | ||
| dtoc_test_addr32_64.dts | ||
| dtoc_test_addr64.dts | ||
| dtoc_test_addr64_32.dts | ||
| dtoc_test_aliases.dts | ||
| dtoc_test_empty.dts | ||
| dtoc_test_phandle.dts | ||
| dtoc_test_simple.dts | ||
| fdt.py | ||
| fdt_util.py | ||
| test_dtoc.py | ||