Skip to content

Commit 13c41e8

Browse files
committed
radxa-nio-12l: u-boot: fix u-boot env conflict; include userspace tooling
- u-boot stores env in UFS LUN 1 - use a 2mb offset (different from vendor/Collabora's) to avoid any env conflict - point fw_printenv/setenv at it at the correct offset and size
1 parent 0f28e1e commit 13c41e8

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

config/boards/radxa-nio-12l.conf

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,26 @@ declare -g BOOTCONFIG="genio_1200_radxa_nio_12l_d8_defconfig" # d4/d8/d16 are ir
1414
declare -g BOOT_SOC="mt8395" # the NIO-12L is a MT8395, but everything is named mt8195 in OPTEE/TF-A/Libbase/etc.
1515
declare -g MEDIATEK_GENIO_SOC_PLATFORM="mt8195" # The actual PLAT= for TF-A, libbase, etc.
1616
# blobs live at https://github.com/armbian/mtkbin/tree/main/radxa-nio-12l
17+
18+
# Important: we change u-boot's env offset to half-way through the UFS LUN, so we don't conflict or inherit env from
19+
# vendor or Collabora version of u-boot, in case the user had ran `saveenv` previously. It would conflict
20+
# with Armbian's version ("env default -f -a" to clean), which boots OS from SD cards first, Eth last, etc.
21+
function post_config_uboot_target__nio_12l_armbian_specific_environment_location() {
22+
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: board-specific configs" "info"
23+
run_host_command_logged scripts/config --set-val CONFIG_ENV_OFFSET "0x200000"
24+
}
25+
26+
# Include fw_setenv, configured to point to the correct spot on the UFS LUN number
27+
declare -g PACKAGE_LIST_BOARD="libubootenv-tool" # libubootenv-tool provides fw_printenv and fw_setenv, for talking to U-Boot environment
28+
function post_family_tweaks__config_radxa_nio_12l_fwenv() {
29+
display_alert "Configuring fw_printenv and fw_setenv" "for ${BOARD}" "info"
30+
# Addresses below come from CONFIG_ENV_OFFSET and CONFIG_ENV_SIZE in defconfig
31+
cat <<- 'FW_ENV_CONFIG' > "${SDCARD}"/etc/fw_env.config
32+
# UFS LUN 2 (scsi 1 in u-boot) u-boot env for the ${BOARD_NAME}
33+
# The correct way to access the device would be /dev/disk/by-path/platform-11270000.ufshci-scsi-0:0:0:1
34+
# but unfortunately libubootenv-tool can't handle the colons in that path; so use /dev/sdb instead
35+
# ATTENTION: Offset is set to 0x200000 to avoid conflict with Collabora/vendor build u-boot env area
36+
# Device name Device offset Env. size Flash sector size Number of sectors
37+
/dev/sdb 0x200000 0x2000
38+
FW_ENV_CONFIG
39+
}

0 commit comments

Comments
 (0)