Re: [PATCH v2 06/10] mach-snapdragon: Kconfig: changes / additions to support SPL

Michael Srba
2026-04-18T05:56:07Z

Hi,

On 4/13/26 19:17, Tom Rini wrote:
> On Sat, Apr 11, 2026 at 02:00:11AM +0200, michael.srba@seznam.cz wrote:
>
>> From: Michael Srba <Michael.Srba@seznam.cz>
>>
>> An SoC to target has to be selected, e.g. SPL_TARGET_SDM845.
>> This will select reasonable defaults and enable per-SoC linker
>> script (if required).
>>
>> Signed-off-by: Michael Srba <Michael.Srba@seznam.cz>
>> ---
>> arch/arm/Kconfig | 31 +++++++++++++++++++++++++++-
>> arch/arm/mach-snapdragon/Kconfig | 44 ++++++++++++++++++++++++++++++++++------
>> 2 files changed, 68 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 03416c55265..8490e336516 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -1138,9 +1138,38 @@ config ARCH_SNAPDRAGON
>> select SAVE_PREV_BL_FDT_ADDR if !ENABLE_ARM_SOC_BOOT0_HOOK
>> select LINUX_KERNEL_IMAGE_HEADER if !ENABLE_ARM_SOC_BOOT0_HOOK
>> select SYSRESET
>> - select SYSRESET_PSCI
>> + select SYSRESET_PSCI if !SPL
>> select ANDROID_BOOT_IMAGE_IGNORE_BLOB_ADDR
>> select MMU_PGPROT
>> + select SUPPORT_SPL
>> + select ARMV8_SPL_EXCEPTION_VECTORS if SPL
>> + select ENABLE_ARM_SOC_BOOT0_HOOK if SPL
>> + select SPL_DM if SPL
>> + select SPL_DM_GPIO if SPL
>> + select SPL_DM_PMIC if SPL
>> + select SPL_DM_USB_GADGET if SPL
>> + select SPL_ENV_SUPPORT if SPL
>> + select SPL_GPIO if SPL
>> + select SPL_HAS_BSS_LINKER_SECTION if SPL
>> + select SPL_LIBCOMMON_SUPPORT if SPL
>> + select SPL_LIBDISK_SUPPORT if SPL
>> + select SPL_LIBGENERIC_SUPPORT if SPL
>> + select SPL_MMC if SPL
>> + select SPL_OF_REAL if SPL
>> + select SPL_OF_CONTROL if SPL
>> + select SPL_PINCONF if SPL
>> + select SPL_PINCTRL if SPL
>> + select SPL_PINCTRL_FULL if SPL
>> + select SPL_PINCTRL_GENERIC if SPL
>> + select SPL_PINCONF_RECURSIVE if SPL
>> + select SPL_PINMUX if SPL
>> + select SPL_SPRINTF if SPL
>> + select SPL_STRTO if SPL
>> + select SPL_USB_GADGET if SPL
>> + imply DM_EVENT if USB_DWC3_GENERIC || SPL_USB_DWC3_GENERIC
>> + imply SPL_EVENT if SPL_USB_DWC3_GENERIC
>> + imply OF_LIVE if USB_DWC3_GENERIC
>> + imply SPL_OF_LIVE if SPL_USB_DWC3_GENERIC
>> imply OF_UPSTREAM
>> imply CMD_DM
>> imply DM_USB_GADGET
> This part looks good.
>
>> diff --git a/arch/arm/mach-snapdragon/Kconfig b/arch/arm/mach-snapdragon/Kconfig
>> index 976c0e35fce..74d687ceee2 100644
>> --- a/arch/arm/mach-snapdragon/Kconfig
>> +++ b/arch/arm/mach-snapdragon/Kconfig
>> @@ -11,18 +11,12 @@ config SYS_VENDOR
>> Based on this option board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD>
>> will be used as the custom board directory.
>>
>> -config SYS_MALLOC_LEN
>> - default 0x10000000
>> -
>> config SYS_MALLOC_F_LEN
>> default 0x2000
>>
>> config SPL_SYS_MALLOC_F
>> default y
>>
>> -config SPL_SYS_MALLOC_F_LEN
>> - default 0x2000
>> -
>> config SYS_MALLOC_LEN
>> default 0x800000
>>
>> @@ -45,4 +39,42 @@ config SYS_CONFIG_NAME
>> Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
>> will be used for board configuration.
>>
>> +config SPL_SHARES_INIT_SP_ADDR
>> + default n
>> +
>> +config SPL_HAVE_INIT_STACK
>> + default y
>> +
>> +# SPL targets
>> +
>> +config SPL_TARGET_SDM845
>> + bool "Set reasonable default values for running SPL in SRAM on sdm845 devices"
> This namespace is confusing and so shouldn't be used. Does SDM845 get
> used without SPL? We should probably follow the convention of adding a
> new defconfig of <whatever board>_spl_defconfig, that enables the
> options as needed.
The rationale for this naming was that outside SPL, we don't currently
discriminate between SoCs at compile time (there is some discrimination
between legacy board support the and unified "board" which covers all
non-legacy boards no matter the SoC, but for non-legacy boards there
is just a single build of U-Boot proper, possibly with a board dtb
appended if used as the primary bootloader). I suppose the SPL_ prefix
may be confusing and isn't strictly necessary, and we may need a similar
target option for msm8916 in the future which wouldn't be used in SPL
but in u-boot proper, so it makes sense to get rid of the prefix.

The reason we need this config option at all (even if we move all
the Kconfig defaults that use it into the defconfig) is that the
boot0.h is shared among all of mach-snapdragon, and we need a way
to select which SoC-specific boot0.h we should include.
Now, it does look like SYS_SOC is intended for stuff like this,
however changing SYS_SOC from snapdragon seems to completely break
the unified board support which isn't really worth it.

Admittedly, it does seem that I somehow completely forgot to mention that
use of the config option in both the commit message and the Kconfig,
but it is effectively the only use it has left after moving everything
into the defconfig.

So, should I include an SoC selection menu similar to the board selection
menus in e.g mach-exynos, which would now solely be used by the ifdef
in boot0.h? Something like
```
choice
prompt "Qualcomm SoC select"
default TARGET_NONE if !SPL
help
While U-Boot on Qualcomm platforms doesn't generally need compile-time
adjustment based on the target SoC, there are a few exceptions to this.
Currently this concerns boot0.h discrimination.

config TARGET_NONE
bool "Generic build"
help
Select this if you're not building SPL. U-Boot proper builds are currently
generic across all SoCs.

config TARGET_SDM845
bool "SPL targeting the sdm845 SoC"
help
Select this if you are bulding u-boot SPL for sdm845.
Currently this gates sdm845-specific boot0.h (only used in SPL).

endchoice
```

... or do you have something else in mind? I'm not entirely sure if you're
suggesting to get rid of TARGET_SDM845 completely (which I really don't see
as possible at least without a lot of unnecessary pain) or just of it's
use for the defaults.

Regards,
Michael
>