The usage of fdt_fixup_reserved is repeated for ATF and OP-TEE for multiple platforms, this patch creates a single fdt API for fixing up the reserved-memory node with added error handling.
All k3 platforms already share a common tispl template which ensures binaries are loaded as per the respective CONFIG_*_LOAD_ADDR. And the provided new_size for the fixup is overridden by the size from fdt node anyways. This allows for safe abstraction of the reserved memory fixups for all current platforms. fdt_fixup_reserved now abstracts the ATF and OP-TEE fixups by calling the renamed static fdt_fixup_reserved_memory function with the required parameters. Signed-off-by: Anshul Dalal <[email protected]> --- arch/arm/mach-k3/am62ax/am62a7_fdt.c | 5 +---- arch/arm/mach-k3/am62px/am62p5_fdt.c | 5 +---- arch/arm/mach-k3/am62x/am625_fdt.c | 5 +---- arch/arm/mach-k3/common_fdt.c | 22 ++++++++++++++++++++-- arch/arm/mach-k3/common_fdt.h | 3 +-- arch/arm/mach-k3/j722s/j722s_fdt.c | 5 +---- 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/arch/arm/mach-k3/am62ax/am62a7_fdt.c b/arch/arm/mach-k3/am62ax/am62a7_fdt.c index 7f764ab36b5..9a4599432ff 100644 --- a/arch/arm/mach-k3/am62ax/am62a7_fdt.c +++ b/arch/arm/mach-k3/am62ax/am62a7_fdt.c @@ -10,8 +10,5 @@ int ft_system_setup(void *blob, struct bd_info *bd) { - fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000); - fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000); - - return 0; + return fdt_fixup_reserved(blob); } diff --git a/arch/arm/mach-k3/am62px/am62p5_fdt.c b/arch/arm/mach-k3/am62px/am62p5_fdt.c index 2c40fa5a594..9f4b1663864 100644 --- a/arch/arm/mach-k3/am62px/am62p5_fdt.c +++ b/arch/arm/mach-k3/am62px/am62p5_fdt.c @@ -92,8 +92,5 @@ int ft_system_setup(void *blob, struct bd_info *bd) fdt_fixup_canfd_nodes_am62p(blob, k3_has_canfd()); fdt_fixup_thermal_zone_nodes_am62p(blob, k3_get_max_temp()); fdt_fixup_cpu_freq_nodes_am62p(blob, k3_get_a53_max_frequency()); - fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000); - fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000); - - return 0; + return fdt_fixup_reserved(blob); } diff --git a/arch/arm/mach-k3/am62x/am625_fdt.c b/arch/arm/mach-k3/am62x/am625_fdt.c index 11152194ed0..e4382508dc3 100644 --- a/arch/arm/mach-k3/am62x/am625_fdt.c +++ b/arch/arm/mach-k3/am62x/am625_fdt.c @@ -118,8 +118,5 @@ int ft_system_setup(void *blob, struct bd_info *bd) fdt_fixup_pru_node_am625(blob, k3_has_pru()); fdt_fixup_thermal_zone_nodes_am625(blob, k3_get_max_temp()); fdt_fixup_thermal_cooling_device_cpus_am625(blob, k3_get_core_nr()); - fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000); - fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000); - - return 0; + return fdt_fixup_reserved(blob); } diff --git a/arch/arm/mach-k3/common_fdt.c b/arch/arm/mach-k3/common_fdt.c index 75f0469f456..5b89b85a852 100644 --- a/arch/arm/mach-k3/common_fdt.c +++ b/arch/arm/mach-k3/common_fdt.c @@ -115,8 +115,9 @@ int fdt_del_node_path(void *blob, const char *path) return ret; } -int fdt_fixup_reserved(void *blob, const char *name, - unsigned int new_address, unsigned int new_size) +static int fdt_fixup_reserved_memory(void *blob, const char *name, + unsigned int new_address, + unsigned int new_size) { int nodeoffset, subnode; int ret; @@ -167,3 +168,20 @@ add_carveout: return 0; } + +int fdt_fixup_reserved(void *blob) +{ + int ret; + + ret = fdt_fixup_reserved_memory(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, + 0x80000); + if (ret) + return ret; + + ret = fdt_fixup_reserved_memory(blob, "optee", + CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000); + if (ret) + return ret; + + return 0; +} diff --git a/arch/arm/mach-k3/common_fdt.h b/arch/arm/mach-k3/common_fdt.h index 52c07957483..e2f26983a73 100644 --- a/arch/arm/mach-k3/common_fdt.h +++ b/arch/arm/mach-k3/common_fdt.h @@ -8,7 +8,6 @@ int fdt_fixup_msmc_ram_k3(void *blob); int fdt_del_node_path(void *blob, const char *path); -int fdt_fixup_reserved(void *blob, const char *name, - unsigned int new_address, unsigned int new_size); +int fdt_fixup_reserved(void *blob); #endif /* _COMMON_FDT_H */ diff --git a/arch/arm/mach-k3/j722s/j722s_fdt.c b/arch/arm/mach-k3/j722s/j722s_fdt.c index 29c832d28ac..97d34f50539 100644 --- a/arch/arm/mach-k3/j722s/j722s_fdt.c +++ b/arch/arm/mach-k3/j722s/j722s_fdt.c @@ -9,8 +9,5 @@ int ft_system_setup(void *blob, struct bd_info *bd) { - fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000); - fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000); - - return 0; + return fdt_fixup_reserved(blob); } -- 2.49.0

