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