diff --git a/common/fdt_wrappers.c b/common/fdt_wrappers.c index 842d71339308e015c00ff67b478e883d10e53a4e..2c4b9c35328ad2a12a8c96938ea3a8e035db238c 100644 --- a/common/fdt_wrappers.c +++ b/common/fdt_wrappers.c @@ -276,3 +276,21 @@ int fdt_get_reg_props_by_index(const void *dtb, int node, int index, 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. + ******************************************************************************/ +int fdt_get_reg_props_by_name(const void *dtb, int node, const char *name, + uintptr_t *base, size_t *size) +{ + int index; + + index = fdt_stringlist_search(dtb, node, "reg-names", name); + if (index < 0) { + return index; + } + + return fdt_get_reg_props_by_index(dtb, node, index, base, size); +} diff --git a/drivers/st/spi/stm32_qspi.c b/drivers/st/spi/stm32_qspi.c index c5e4ea86e3d6d81bd0792493da9b51e65f4d5617..ff92796e75a4a3c362c618901e28447e3781ed12 100644 --- a/drivers/st/spi/stm32_qspi.c +++ b/drivers/st/spi/stm32_qspi.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -465,13 +466,13 @@ int stm32_qspi_init(void) return -FDT_ERR_NOTFOUND; } - ret = fdt_get_reg_props_by_name(qspi_node, "qspi", + ret = fdt_get_reg_props_by_name(fdt, qspi_node, "qspi", &stm32_qspi.reg_base, &size); if (ret != 0) { return ret; } - ret = fdt_get_reg_props_by_name(qspi_node, "qspi_mm", + ret = fdt_get_reg_props_by_name(fdt, qspi_node, "qspi_mm", &stm32_qspi.mm_base, &stm32_qspi.mm_size); if (ret != 0) { diff --git a/include/common/fdt_wrappers.h b/include/common/fdt_wrappers.h index 7a6b59893c6dca3b87cc1f4ad32c4fb58895eace..06625e476b92ac8a30811816c90ee1a370131a09 100644 --- a/include/common/fdt_wrappers.h +++ b/include/common/fdt_wrappers.h @@ -30,5 +30,7 @@ int fdtw_write_inplace_bytes(void *dtb, int node, const char *prop, unsigned int length, const void *data); int fdt_get_reg_props_by_index(const void *dtb, int node, int index, uintptr_t *base, size_t *size); +int fdt_get_reg_props_by_name(const void *dtb, int node, const char *name, + uintptr_t *base, size_t *size); #endif /* FDT_WRAPPERS_H */ diff --git a/plat/arm/board/fvp/jmptbl.i b/plat/arm/board/fvp/jmptbl.i index 50a5ba4d9dd2c29c61becb537296eb06ef42fb63..c656c7938621fee13ec41a00f4a187cf79e33cf9 100644 --- a/plat/arm/board/fvp/jmptbl.i +++ b/plat/arm/board/fvp/jmptbl.i @@ -28,6 +28,7 @@ fdt fdt_subnode_offset fdt fdt_address_cells fdt fdt_size_cells fdt fdt_parent_offset +fdt fdt_stringlist_search mbedtls mbedtls_asn1_get_alg mbedtls mbedtls_asn1_get_alg_null mbedtls mbedtls_asn1_get_bitstring_null diff --git a/plat/arm/board/juno/jmptbl.i b/plat/arm/board/juno/jmptbl.i index eb4399ec0714534a9d295fee779b102be3bd3810..213afd0088a8c45e9cfe613a514a80df6d187d27 100644 --- a/plat/arm/board/juno/jmptbl.i +++ b/plat/arm/board/juno/jmptbl.i @@ -24,6 +24,7 @@ fdt fdt_setprop_inplace_namelen_partial fdt fdt_first_subnode fdt fdt_next_subnode fdt fdt_parent_offset +fdt fdt_stringlist_search mbedtls mbedtls_asn1_get_alg mbedtls mbedtls_asn1_get_alg_null mbedtls mbedtls_asn1_get_bitstring_null diff --git a/plat/st/common/include/stm32mp_dt.h b/plat/st/common/include/stm32mp_dt.h index 91a8d67c8dceb806bb29576c07b64741d85a6764..e79551a3115e5cba5096428adb9024dc5790fa9b 100644 --- a/plat/st/common/include/stm32mp_dt.h +++ b/plat/st/common/include/stm32mp_dt.h @@ -28,8 +28,6 @@ int dt_open_and_check(void); int fdt_get_address(void **fdt_addr); bool fdt_check_node(int node); uint8_t fdt_get_status(int node); -int fdt_get_reg_props_by_name(int node, const char *name, uintptr_t *base, - size_t *size); int dt_set_stdout_pinctrl(void); void dt_fill_device_info(struct dt_node_info *info, int node); int dt_get_node(struct dt_node_info *info, int offset, const char *compat); diff --git a/plat/st/common/stm32mp_dt.c b/plat/st/common/stm32mp_dt.c index c76b033589494f2686e93c2c9ffa748ce4d8befb..356af0bbcfe049a35d8ba20e1b7e04f4528190c8 100644 --- a/plat/st/common/stm32mp_dt.c +++ b/plat/st/common/stm32mp_dt.c @@ -135,46 +135,6 @@ static int fdt_get_node_parent_size_cells(int node) } #endif -/******************************************************************************* - * 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. - ******************************************************************************/ -int fdt_get_reg_props_by_name(int node, const char *name, uintptr_t *base, - size_t *size) -{ - const fdt32_t *cuint; - int index, len; - - assert((fdt_get_node_parent_address_cells(node) == 1) && - (fdt_get_node_parent_size_cells(node) == 1)); - - index = fdt_stringlist_search(fdt, node, "reg-names", name); - if (index < 0) { - return index; - } - - cuint = fdt_getprop(fdt, node, "reg", &len); - if (cuint == NULL) { - return -FDT_ERR_NOTFOUND; - } - - if ((index * (int)sizeof(uint32_t)) > len) { - return -FDT_ERR_BADVALUE; - } - - cuint += index << 1; - if (base != NULL) { - *base = fdt32_to_cpu(*cuint); - } - cuint++; - if (size != NULL) { - *size = fdt32_to_cpu(*cuint); - } - - return 0; -} - /******************************************************************************* * This function gets the stdout path node. * It reads the value indicated inside the device tree.