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

Reply via email to