In snagboot mode, U-Boot is loaded directly by XBL without PSCI firmware support. The functions show_psci_version() and qcom_psci_fixup() call arm_smccc_smc() which is unavailable when CONFIG_ARM_SMCCC is disabled, causing build failures.
Wrap both functions with CONFIG_ARM_SMCCC guards and provide empty inline stubs for the disabled case. Signed-off-by: Balaji Selvanathan <[email protected]> --- Changes in v2: - Newly introduced in v2 --- arch/arm/mach-snapdragon/board.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/mach-snapdragon/board.c b/arch/arm/mach-snapdragon/board.c index 829a0109ac7..be4bdd49cf6 100644 --- a/arch/arm/mach-snapdragon/board.c +++ b/arch/arm/mach-snapdragon/board.c @@ -158,6 +158,7 @@ static int qcom_parse_memory(const void *fdt) return 0; } +#ifdef CONFIG_ARM_SMCCC static void show_psci_version(void) { struct arm_smccc_res res; @@ -172,6 +173,12 @@ static void show_psci_version(void) PSCI_VERSION_MAJOR(res.a0), PSCI_VERSION_MINOR(res.a0)); } +#else +static inline void show_psci_version(void) +{ + /* PSCI not available - no-op */ +} +#endif /** * Most MSM8916 devices in the wild shipped without PSCI support, but the @@ -180,6 +187,7 @@ static void show_psci_version(void) * firmware driver doesn't bind (which then binds a sysreset driver that won't * work). */ +#ifdef CONFIG_ARM_SMCCC static void qcom_psci_fixup(void *fdt) { int offset, ret; @@ -199,6 +207,12 @@ static void qcom_psci_fixup(void *fdt) if (ret) log_err("Failed to delete /psci node: %d\n", ret); } +#else +static inline void qcom_psci_fixup(void *fdt) +{ + /* PSCI not available - no-op */ +} +#endif /* We support booting U-Boot with an internal DT when running as a first-stage bootloader * or for supporting quirky devices where it's easier to leave the downstream DT in place -- 2.34.1

