diff options
author | Andre Przywara <andre.przywara@arm.com> | 2020-03-26 12:51:21 +0000 |
---|---|---|
committer | Andre Przywara <andre.przywara@arm.com> | 2020-04-28 15:56:31 +0100 |
commit | 52a616b48c617fe8721106f29f2910ca4681afea (patch) | |
tree | 9c38f82d440ef555adcf36f710127625cad519b2 /plat/st | |
parent | 6e3a89f449fa5b4c0153990a64124211197f426a (diff) | |
download | trusted-firmware-a-52a616b48c617fe8721106f29f2910ca4681afea.tar.gz |
plat/stm32: Use generic fdt_read_uint32_array() implementation
The device tree parsing code for the STM32 platform is using its own FDT
helper functions, some of them being rather generic.
In particular the existing fdt_read_uint32_array() implementation is now
almost identical to the new generic code in fdt_wrappers.c, so we can
remove the ST specific version and adjust the existing callers.
Compared to the original ST implementation the new version takes a
pointer to the DTB as the first argument, and also swaps the order of
the number of cells and the pointer.
Change-Id: Id06b0f1ba4db1ad1f733be40e82c34f46638551a
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Diffstat (limited to 'plat/st')
-rw-r--r-- | plat/st/common/include/stm32mp_dt.h | 2 | ||||
-rw-r--r-- | plat/st/common/stm32mp_dt.c | 38 | ||||
-rw-r--r-- | plat/st/stm32mp1/platform.mk | 3 |
3 files changed, 5 insertions, 38 deletions
diff --git a/plat/st/common/include/stm32mp_dt.h b/plat/st/common/include/stm32mp_dt.h index a29d9148d0..92f3d65287 100644 --- a/plat/st/common/include/stm32mp_dt.h +++ b/plat/st/common/include/stm32mp_dt.h @@ -30,8 +30,6 @@ bool fdt_check_node(int node); uint8_t fdt_get_status(int node); uint32_t fdt_read_uint32_default(int node, const char *prop_name, uint32_t dflt_value); -int fdt_read_uint32_array(int node, const char *prop_name, - uint32_t *array, uint32_t count); int fdt_get_reg_props_by_name(int node, const char *name, uintptr_t *base, size_t *size); int dt_set_stdout_pinctrl(void); diff --git a/plat/st/common/stm32mp_dt.c b/plat/st/common/stm32mp_dt.c index acb323cf29..6b76424ae3 100644 --- a/plat/st/common/stm32mp_dt.c +++ b/plat/st/common/stm32mp_dt.c @@ -12,6 +12,7 @@ #include <platform_def.h> #include <common/debug.h> +#include <common/fdt_wrappers.h> #include <drivers/st/stm32_gpio.h> #include <drivers/st/stm32mp1_ddr.h> #include <drivers/st/stm32mp1_ram.h> @@ -155,39 +156,6 @@ uint32_t fdt_read_uint32_default(int node, const char *prop_name, } /******************************************************************************* - * This function reads a series of parameters in a node property - * (generic use of fdt library). - * It reads the values inside the device tree, from property name and node. - * The number of parameters is also indicated as entry parameter. - * Returns 0 on success and a negative FDT error code on failure. - * If success, values are stored at the third parameter address. - ******************************************************************************/ -int fdt_read_uint32_array(int node, const char *prop_name, uint32_t *array, - uint32_t count) -{ - const fdt32_t *cuint; - int len; - uint32_t i; - - cuint = fdt_getprop(fdt, node, prop_name, &len); - if (cuint == NULL) { - return -FDT_ERR_NOTFOUND; - } - - if ((uint32_t)len != (count * sizeof(uint32_t))) { - return -FDT_ERR_BADLAYOUT; - } - - for (i = 0; i < ((uint32_t)len / sizeof(uint32_t)); i++) { - *array = fdt32_to_cpu(*cuint); - array++; - cuint++; - } - - return 0; -} - -/******************************************************************************* * This function fills reg node info (base & size) with an index found by * checking the reg-names node. * Returns 0 on success and a negative FDT error code on failure. @@ -396,7 +364,7 @@ uintptr_t dt_get_ddrctrl_base(void) assert((fdt_get_node_parent_address_cells(node) == 1) && (fdt_get_node_parent_size_cells(node) == 1)); - if (fdt_read_uint32_array(node, "reg", array, 4) < 0) { + if (fdt_read_uint32_array(fdt, node, "reg", 4, array) < 0) { return 0; } @@ -421,7 +389,7 @@ uintptr_t dt_get_ddrphyc_base(void) assert((fdt_get_node_parent_address_cells(node) == 1) && (fdt_get_node_parent_size_cells(node) == 1)); - if (fdt_read_uint32_array(node, "reg", array, 4) < 0) { + if (fdt_read_uint32_array(fdt, node, "reg", 4, array) < 0) { return 0; } diff --git a/plat/st/stm32mp1/platform.mk b/plat/st/stm32mp1/platform.mk index 5ce7a9c4f7..b0ba82abfd 100644 --- a/plat/st/stm32mp1/platform.mk +++ b/plat/st/stm32mp1/platform.mk @@ -62,7 +62,8 @@ DTC_FLAGS += -Wno-unit_address_vs_reg include lib/libfdt/libfdt.mk -PLAT_BL_COMMON_SOURCES := plat/st/common/stm32mp_common.c \ +PLAT_BL_COMMON_SOURCES := common/fdt_wrappers.c \ + plat/st/common/stm32mp_common.c \ plat/st/stm32mp1/stm32mp1_private.c PLAT_BL_COMMON_SOURCES += drivers/st/uart/aarch32/stm32_console.S |