diff --git a/common/fdt_wrappers.c b/common/fdt_wrappers.c index 842d713..2c4b9c3 100644 --- a/common/fdt_wrappers.c +++ b/common/fdt_wrappers.c @@ -276,3 +276,21 @@ 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 c5e4ea8..ff92796 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 @@ 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 7a6b598..06625e4 100644 --- a/include/common/fdt_wrappers.h +++ b/include/common/fdt_wrappers.h @@ -30,5 +30,7 @@ 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 50a5ba4..c656c79 100644 --- a/plat/arm/board/fvp/jmptbl.i +++ b/plat/arm/board/fvp/jmptbl.i @@ -28,6 +28,7 @@ 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 eb4399e..213afd0 100644 --- a/plat/arm/board/juno/jmptbl.i +++ b/plat/arm/board/juno/jmptbl.i @@ -24,6 +24,7 @@ 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 91a8d67..e79551a 100644 --- a/plat/st/common/include/stm32mp_dt.h +++ b/plat/st/common/include/stm32mp_dt.h @@ -28,8 +28,6 @@ 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 c76b033..356af0b 100644 --- a/plat/st/common/stm32mp_dt.c +++ b/plat/st/common/stm32mp_dt.c @@ -136,46 +136,6 @@ #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. * Returns node offset on success and a negative FDT error code on failure.