On 29 August 2017 at 14:23, Dr. Philipp Tomsich
<philipp.toms...@theobroma-systems.com> wrote:
>
>> On 29 Aug 2017, at 22:15, Simon Glass <s...@chromium.org> wrote:
>>
>> 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 <s...@chromium.org>
>>
>> Suggested-by: Heiko Stuebner <he...@sntech.de>
>> Reported-by: Kever Yang <kever.y...@rock-chips.com>
>
> Reviewed-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
>
> See below.
>
>> ---
>>
>> Changes in v2:
>> - Support 'reg' properties with a single cell (e.g. #size-cells = 0)
>> - Introduce an fdt_val_t type which is either 32- or 64-bits long
>> - Update rk3368 and rk3399 uses
>> - Drop review tags since there are significant changes in this patch
>>
>> drivers/clk/rockchip/clk_rk3368.c  |   2 +-
>> drivers/clk/rockchip/clk_rk3399.c  |   4 +-
>> drivers/core/regmap.c              |   2 +-
>> include/fdtdec.h                   |   2 +
>> include/regmap.h                   |   2 +-
>> include/syscon.h                   |   6 +-
>> tools/dtoc/dtb_platdata.py         |  61 +++++++++++
>> 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_util.py             |   2 +
>> tools/dtoc/test_dtoc.py            | 212 
>> +++++++++++++++++++++++++++++++++++++
>> 13 files changed, 413 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
>>
>> diff --git a/drivers/clk/rockchip/clk_rk3368.c 
>> b/drivers/clk/rockchip/clk_rk3368.c
>> index 2be1f572d7..0160d50c03 100644
>> --- a/drivers/clk/rockchip/clk_rk3368.c
>> +++ b/drivers/clk/rockchip/clk_rk3368.c
>> @@ -471,7 +471,7 @@ static int rk3368_clk_probe(struct udevice *dev)
>> #if CONFIG_IS_ENABLED(OF_PLATDATA)
>>       struct rk3368_clk_plat *plat = dev_get_platdata(dev);
>>
>> -     priv->cru = map_sysmem(plat->dtd.reg[1], plat->dtd.reg[3]);
>> +     priv->cru = map_sysmem(plat->dtd.reg[0], plat->dtd.reg[1]);
>> #endif
>> #if IS_ENABLED(CONFIG_SPL_BUILD) || IS_ENABLED(CONFIG_TPL_BUILD)
>>       rkclk_init(priv->cru);
>> diff --git a/drivers/clk/rockchip/clk_rk3399.c 
>> b/drivers/clk/rockchip/clk_rk3399.c
>> index 3edafea140..0de3db620d 100644
>> --- a/drivers/clk/rockchip/clk_rk3399.c
>> +++ b/drivers/clk/rockchip/clk_rk3399.c
>> @@ -963,7 +963,7 @@ static int rk3399_clk_probe(struct udevice *dev)
>> #if CONFIG_IS_ENABLED(OF_PLATDATA)
>>       struct rk3399_clk_plat *plat = dev_get_platdata(dev);
>>
>> -     priv->cru = map_sysmem(plat->dtd.reg[1], plat->dtd.reg[3]);
>> +     priv->cru = map_sysmem(plat->dtd.reg[0], plat->dtd.reg[0]);
>
> The second argument needs to be reg[1].
>

OK, I will fix when applying, thanks.

- Simon
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to