Simon, > On 20 Jun 2017, at 05:34, Simon Glass <s...@chromium.org> wrote: > > This series updates dtoc to support 64-bit addresses automatically. These > appear in C code as fdt64_t arrays: > > struct dtd_test1 { > fdt64_t reg[2]; > > }; > > static struct dtd_test1 dtv_test1 = { > .reg = {0x123400000000, 0x5678}, > }; > > C code can then process these address and size parents easily. This > feature is controlled by the #address-cells and #size-cells values of the > parent. > > > Simon Glass (3): > dtoc: Adjust Node to record its parent > dtoc: Add a 64-bit type and a way to convert cells into 64 bits > dtoc: Add support for 32 or 64-bit addresses > > tools/dtoc/dtb_platdata.py | 62 +++++++++++ > tools/dtoc/dtoc_test_addr32.dts | 27 +++++ > tools/dtoc/dtoc_test_addr32_64.dts | 33 ++++++ > tools/dtoc/dtoc_test_addr64.dts | 33 ++++++ > tools/dtoc/dtoc_test_addr64_32.dts | 33 ++++++ > tools/dtoc/fdt.py | 14 +-- > tools/dtoc/fdt_util.py | 14 +++ > tools/dtoc/test_dtoc.py | 212 +++++++++++++++++++++++++++++++++++++ > 8 files changed, 422 insertions(+), 6 deletions(-) > create mode 100644 tools/dtoc/dtoc_test_addr32.dts > create mode 100644 tools/dtoc/dtoc_test_addr32_64.dts > create mode 100644 tools/dtoc/dtoc_test_addr64.dts > create mode 100644 tools/dtoc/dtoc_test_addr64_32.dts > > —
While testing this for the TPL stage of the RK3368, I triggered an error: > Traceback (most recent call last): > File "./tools/dtoc/dtoc", line 76, in <module> > options.output) > File > "/hgst-3tb/home/ptomsich/rk3399-spl/u-boot/tools/dtoc/dtb_platdata.py", line > 510, in run_steps > plat.scan_reg_sizes() > File > "/hgst-3tb/home/ptomsich/rk3399-spl/u-boot/tools/dtoc/dtb_platdata.py", line > 297, in scan_reg_sizes > addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.na) > File "/hgst-3tb/home/ptomsich/rk3399-spl/u-boot/tools/dtoc/fdt_util.py", > line 41, in fdt_cells_to_cpu > out = long(fdt32_to_cpu(val[0])) > File "/hgst-3tb/home/ptomsich/rk3399-spl/u-boot/tools/dtoc/fdt_util.py", > line 30, in fdt32_to_cpu > return struct.unpack('>I', val)[0] > struct.error: unpack requires a string argument of length 4 with the following DTS snippet: > spi@ff120000 { > compatible = "rockchip,rk3368-spi", "rockchip,rk3066-spi"; > reg = <0x0 0xff120000 0x0 0x1000>; > clocks = <0xb 0x42 0xb 0x153>; > clock-names = "spiclk", "apb_pclk"; > interrupts = <0x0 0x2d 0x4>; > #address-cells = <0x1>; > #size-cells = <0x0>; > status = "okay"; > u-boot,dm-pre-reloc; > > w25q32dw@0 { > u-boot,dm-pre-reloc; > compatible = "spi-flash"; > reg = <0x0>; > spi-max-frequency = <0x2f34f60>; > spi-cpol; > spi-cpha; > }; > }; A bit of debug code shows that the error occurs during the processing of the 'w25q32dw@0’ node. Note that this is not a showstopper for the RK3368, as OF_PLATDATA is only used for TPL, which performs a return-to-bootrom anyway (and I will be making this more explicit by using the 'dm-spl’ and ‘dm-tpl’ decorators). Regards, Phil. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot