spl_perform_arch_fixups() looks up the "socfpga-smmu-secure-config" node by name and calls hang() on any error, so every SoC64 platform is forced to carry the node even when it has nothing to program.
Treat a missing node (-ENODEV) as "nothing to do" and skip it, while still calling hang() on a genuine probe/dtreg failure when the node is present. This lets parts where the System-Manager TBU stream-ID / secure-SID setup is owned elsewhere (e.g. by ATF/BL31), or where the reset default already suffices, omit the node without hanging. Legacy SoC64 parts that still program it from U-Boot keep the existing error detection. Signed-off-by: Chen Huei Lok <[email protected]> --- arch/arm/mach-socfpga/spl_soc64.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-socfpga/spl_soc64.c b/arch/arm/mach-socfpga/spl_soc64.c index fa7b1506ce6..d60dcf21816 100644 --- a/arch/arm/mach-socfpga/spl_soc64.c +++ b/arch/arm/mach-socfpga/spl_soc64.c @@ -8,6 +8,7 @@ #include <hang.h> #include <spl.h> #include <dm/uclass.h> +#include <linux/errno.h> DECLARE_GLOBAL_DATA_PTR; @@ -136,7 +137,15 @@ void spl_perform_arch_fixups(struct spl_image_info *spl_image) struct udevice *dev; ret = uclass_get_device_by_name(UCLASS_NOP, "socfpga-smmu-secure-config", &dev); - if (ret) { + if (ret == -ENODEV) { + /* + * No socfpga-smmu-secure-config node: nothing for U-Boot to + * program (e.g. parts where ATF/BL31 owns the System-Manager + * TBU stream-ID / secure-SID setup, or where the reset default + * already suffices). Skip instead of failing. + */ + debug("HPS SMMU secure settings: no DT node, skipping\n"); + } else if (ret) { printf("HPS SMMU secure settings init failed: %d\n", ret); hang(); } -- 2.43.7
