
For puma-rk3399 and ringneck-px30, U-Boot proper automatically modifies boot_targets to swap the order in which MMC storage media are used for standard boot based on which MMC storage medium was used to load U-Boot proper. This is however only done if the user has not changed it manually, therefore a check between the default and current value is done.
This used to work fine until the migration to standard boot where boot_targets value size in the default environment went above the 32 characters that env_get_default function can return, thus resulting in a truncated variable.
Therefore the check between default and current value would always fail.
By adding the env_get_default_into function, a buffer of the appropriate size can be allocated on the stack to get the whole value of boot_targets in the default environment and thus fixing the check.
While at it, simplify maintenance by putting this logic in a common file and stop using hardcoded DT paths for MMC controllers and SPI flash memory.
Signed-off-by: Quentin Schulz quentin.schulz@theobroma-systems.com --- Changes in v2: - added board/theobroma-systems/common putting all storage medium logic into a common file, - adapted the storage medium logic to be device-agnostic, - added Rbs - removed patches surrounding all code by an ifndef CONFIG_SPL_BUILD and do this at the Makefile level of each board, - Link to v1: https://lore.kernel.org/r/20231108-env_default_theobroma-v1-0-cb493bfdeffd@t...
--- Quentin Schulz (6): rockchip: ringneck-px30: do not hardcode MMC controller paths rockchip: puma-rk3399: do not hardcode MMC controller paths rockchip: ringneck-px30/puma-rk3399: factor out storage medium selection env: allow to copy value from default environment into a buffer env: migrate env_get_default to call env_get_default_into rockchip: theobroma-systems: fix modified boot_targets detection
board/theobroma-systems/common/common.c | 143 +++++++++++++++++++++ board/theobroma-systems/common/common.h | 19 +++ board/theobroma-systems/puma_rk3399/MAINTAINERS | 1 + board/theobroma-systems/puma_rk3399/Makefile | 3 + board/theobroma-systems/puma_rk3399/puma-rk3399.c | 143 +-------------------- board/theobroma-systems/ringneck_px30/MAINTAINERS | 1 + board/theobroma-systems/ringneck_px30/Makefile | 3 + .../ringneck_px30/ringneck-px30.c | 142 +------------------- env/common.c | 16 ++- include/env.h | 10 ++ 10 files changed, 195 insertions(+), 286 deletions(-) --- base-commit: 9e53e45292ee2f1d9d2ccc59914b161bef9b10d7 change-id: 20231108-env_default_theobroma-33774a337fe6
Best regards,