mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
Merge patch series "env: migrate static flags list to Kconfig"
This series from James Hilliard <james.hilliard1@gmail.com> converts the static flags list for the environment to be configured via Kconfig and updates the documentation. Link: https://lore.kernel.org/r/20260511182036.50453-1-james.hilliard1@gmail.com
This commit is contained in:
169
README
169
README
@@ -707,7 +707,7 @@ The following options need to be configured:
|
||||
The same can be accomplished in a more flexible way
|
||||
for any variable by configuring the type of access
|
||||
to allow for those variables in the ".flags" variable
|
||||
or define CFG_ENV_FLAGS_LIST_STATIC.
|
||||
or by setting CONFIG_ENV_FLAGS_LIST_STATIC.
|
||||
|
||||
- Protected RAM:
|
||||
CFG_PRAM
|
||||
@@ -941,173 +941,6 @@ typically in board_init_f() and board_init_r().
|
||||
- CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()
|
||||
- CONFIG_BOARD_LATE_INIT: Call board_late_init()
|
||||
|
||||
Configuration Settings:
|
||||
-----------------------
|
||||
|
||||
- CONFIG_SYS_LONGHELP: Defined when you want long help messages included;
|
||||
undefine this when you're short of memory.
|
||||
|
||||
- CFG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default
|
||||
width of the commands listed in the 'help' command output.
|
||||
|
||||
- CONFIG_SYS_PROMPT: This is what U-Boot prints on the console to
|
||||
prompt for user input.
|
||||
|
||||
- CFG_SYS_BAUDRATE_TABLE:
|
||||
List of legal baudrate settings for this board.
|
||||
|
||||
- CFG_SYS_MEM_RESERVE_SECURE
|
||||
Only implemented for ARMv8 for now.
|
||||
If defined, the size of CFG_SYS_MEM_RESERVE_SECURE memory
|
||||
is substracted from total RAM and won't be reported to OS.
|
||||
This memory can be used as secure memory. A variable
|
||||
gd->arch.secure_ram is used to track the location. In systems
|
||||
the RAM base is not zero, or RAM is divided into banks,
|
||||
this variable needs to be recalcuated to get the address.
|
||||
|
||||
- CFG_SYS_SDRAM_BASE:
|
||||
Physical start address of SDRAM. _Must_ be 0 here.
|
||||
|
||||
- CFG_SYS_FLASH_BASE:
|
||||
Physical start address of Flash memory.
|
||||
|
||||
- CONFIG_SYS_MALLOC_LEN:
|
||||
Size of DRAM reserved for malloc() use.
|
||||
|
||||
- CFG_SYS_BOOTMAPSZ:
|
||||
Maximum size of memory mapped by the startup code of
|
||||
the Linux kernel; all data that must be processed by
|
||||
the Linux kernel (bd_info, boot arguments, FDT blob if
|
||||
used) must be put below this limit, unless "bootm_low"
|
||||
environment variable is defined and non-zero. In such case
|
||||
all data for the Linux kernel must be between "bootm_low"
|
||||
and "bootm_low" + CFG_SYS_BOOTMAPSZ. The environment
|
||||
variable "bootm_mapsize" will override the value of
|
||||
CFG_SYS_BOOTMAPSZ. If CFG_SYS_BOOTMAPSZ is undefined,
|
||||
then the value in "bootm_size" will be used instead.
|
||||
|
||||
- CONFIG_SYS_BOOT_GET_CMDLINE:
|
||||
Enables allocating and saving kernel cmdline in space between
|
||||
"bootm_low" and "bootm_low" + BOOTMAPSZ.
|
||||
|
||||
- CONFIG_SYS_BOOT_GET_KBD:
|
||||
Enables allocating and saving a kernel copy of the bd_info in
|
||||
space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
|
||||
|
||||
- CONFIG_SYS_FLASH_PROTECTION
|
||||
If defined, hardware flash sectors protection is used
|
||||
instead of U-Boot software protection.
|
||||
|
||||
- CONFIG_SYS_FLASH_CFI:
|
||||
Define if the flash driver uses extra elements in the
|
||||
common flash structure for storing flash geometry.
|
||||
|
||||
- CONFIG_FLASH_CFI_DRIVER
|
||||
This option also enables the building of the cfi_flash driver
|
||||
in the drivers directory
|
||||
|
||||
- CONFIG_FLASH_CFI_MTD
|
||||
This option enables the building of the cfi_mtd driver
|
||||
in the drivers directory. The driver exports CFI flash
|
||||
to the MTD layer.
|
||||
|
||||
- CONFIG_SYS_FLASH_USE_BUFFER_WRITE
|
||||
Use buffered writes to flash.
|
||||
|
||||
- CONFIG_ENV_FLAGS_LIST_DEFAULT
|
||||
- CFG_ENV_FLAGS_LIST_STATIC
|
||||
Enable validation of the values given to environment variables when
|
||||
calling env set. Variables can be restricted to only decimal,
|
||||
hexadecimal, or boolean. If CONFIG_CMD_NET is also defined,
|
||||
the variables can also be restricted to IP address or MAC address.
|
||||
|
||||
The format of the list is:
|
||||
type_attribute = [s|d|x|b|i|m]
|
||||
access_attribute = [a|r|o|c]
|
||||
attributes = type_attribute[access_attribute]
|
||||
entry = variable_name[:attributes]
|
||||
list = entry[,list]
|
||||
|
||||
The type attributes are:
|
||||
s - String (default)
|
||||
d - Decimal
|
||||
x - Hexadecimal
|
||||
b - Boolean ([1yYtT|0nNfF])
|
||||
i - IP address
|
||||
m - MAC address
|
||||
|
||||
The access attributes are:
|
||||
a - Any (default)
|
||||
r - Read-only
|
||||
o - Write-once
|
||||
c - Change-default
|
||||
|
||||
- CONFIG_ENV_FLAGS_LIST_DEFAULT
|
||||
Define this to a list (string) to define the ".flags"
|
||||
environment variable in the default or embedded environment.
|
||||
|
||||
- CFG_ENV_FLAGS_LIST_STATIC
|
||||
Define this to a list (string) to define validation that
|
||||
should be done if an entry is not found in the ".flags"
|
||||
environment variable. To override a setting in the static
|
||||
list, simply add an entry for the same variable name to the
|
||||
".flags" variable.
|
||||
|
||||
If CONFIG_REGEX is defined, the variable_name above is evaluated as a
|
||||
regular expression. This allows multiple variables to define the same
|
||||
flags without explicitly listing them for each variable.
|
||||
|
||||
The following definitions that deal with the placement and management
|
||||
of environment data (variable area); in general, we support the
|
||||
following configurations:
|
||||
|
||||
BE CAREFUL! The first access to the environment happens quite early
|
||||
in U-Boot initialization (when we try to get the setting of for the
|
||||
console baudrate). You *MUST* have mapped your NVRAM area then, or
|
||||
U-Boot will hang.
|
||||
|
||||
Please note that even with NVRAM we still use a copy of the
|
||||
environment in RAM: we could work on NVRAM directly, but we want to
|
||||
keep settings there always unmodified except somebody uses "saveenv"
|
||||
to save the current settings.
|
||||
|
||||
BE CAREFUL! For some special cases, the local device can not use
|
||||
"saveenv" command. For example, the local device will get the
|
||||
environment stored in a remote NOR flash by SRIO or PCIE link,
|
||||
but it can not erase, write this NOR flash by SRIO or PCIE interface.
|
||||
|
||||
- CONFIG_NAND_ENV_DST
|
||||
|
||||
Defines address in RAM to which the nand_spl code should copy the
|
||||
environment. If redundant environment is used, it will be copied to
|
||||
CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
|
||||
|
||||
Please note that the environment is read-only until the monitor
|
||||
has been relocated to RAM and a RAM copy of the environment has been
|
||||
created; also, when using EEPROM you will have to use env_get_f()
|
||||
until then to read environment variables.
|
||||
|
||||
The environment is protected by a CRC32 checksum. Before the monitor
|
||||
is relocated into RAM, as a result of a bad CRC you will be working
|
||||
with the compiled-in default environment - *silently*!!! [This is
|
||||
necessary, because the first environment variable we need is the
|
||||
"baudrate" setting for the console - if we have a bad CRC, we don't
|
||||
have any device yet where we could complain.]
|
||||
|
||||
Note: once the monitor has been relocated, then it will complain if
|
||||
the default environment is used; a new CRC is computed as soon as you
|
||||
use the "saveenv" command to store a valid environment.
|
||||
|
||||
- CONFIG_DISPLAY_BOARDINFO
|
||||
Display information about the board that U-Boot is running on
|
||||
when U-Boot starts up. The board function checkboard() is called
|
||||
to do this.
|
||||
|
||||
- CONFIG_DISPLAY_BOARDINFO_LATE
|
||||
Similar to the previous option, but display this information
|
||||
later, once stdio is running and output goes to the LCD, if
|
||||
present.
|
||||
|
||||
Low Level (hardware related) configuration options:
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ CONFIG_CMD_UBI=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="ethaddr:mw,serial#:sw,board_type:sw,sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_ENV_SPI_EARLY=y
|
||||
|
||||
@@ -55,6 +55,7 @@ CONFIG_CMD_UBI=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="ethaddr:mw,serial#:sw,board_type:sw,sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_ENV_SPI_EARLY=y
|
||||
|
||||
@@ -41,6 +41,7 @@ CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
# CONFIG_OF_UPSTREAM is not set
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="BOOT_A_LEFT:dw,BOOT_B_LEFT:dw,BOOT_ORDER:sw"
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_ENV_MMC_EMMC_HW_PARTITION=2
|
||||
|
||||
@@ -74,6 +74,7 @@ CONFIG_EFI_PARTITION=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="bootset:bw,clone_pending:bw,endurance_test:bw,env_persisted:bw,factory_reset:bw,fdtcontroladdr:xw,fitpart:dw,mmcpart:dw,production:bw,ustate:dw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_ENV_REDUNDANT=y
|
||||
|
||||
@@ -92,6 +92,7 @@ CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="bootcount:dw,bootdelay:sw,bootlimit:dw,partitionset_active:sw,rastate:dw,sig_a:sw,sig_b:sw,target_env:sw,upgrade_available:dw,ustate:dw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_SQUASHFS=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="mmcpart:dw,mmcpart_committed:dw,ustate:dw,bootcount:dw,bootlimit:dw,upgrade_available:dw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_REDUNDANT=y
|
||||
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
|
||||
|
||||
@@ -66,6 +66,7 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe000000.nor_flash,nand0=socrates_nand"
|
||||
CONFIG_MTDPARTS_DEFAULT="mtdparts=fe000000.nor_flash:13312k(system1),13312k(system2),5120k(data),128k(env),128k(env-red),768k(u-boot);socrates_nand:256M(ubi-data1),-(ubi-data2)"
|
||||
# CONFIG_CMD_IRQ is not set
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="ethaddr:mw,eth1addr:mw,system1_addr:xw,serial#:sw,ethact:sw,ethprime:sw"
|
||||
CONFIG_ENV_IS_IN_FLASH=y
|
||||
CONFIG_ENV_REDUNDANT=y
|
||||
CONFIG_ENV_ADDR_REDUND=0xFFF00000
|
||||
|
||||
@@ -49,3 +49,43 @@ The signature of the callback functions is::
|
||||
include/search.h
|
||||
|
||||
The return value is 0 if the variable change is accepted and 1 otherwise.
|
||||
|
||||
Flags for environment variables
|
||||
-------------------------------
|
||||
|
||||
Environment flags validate the values given to environment variables and
|
||||
restrict how environment variables can be changed.
|
||||
|
||||
The static list is configured with CONFIG_ENV_FLAGS_LIST_STATIC. The list
|
||||
must be in the following format::
|
||||
|
||||
type_attribute = [s|d|x|b|i|m]
|
||||
access_attribute = [a|r|o|c|w]
|
||||
attributes = type_attribute[access_attribute]
|
||||
entry = variable_name[:attributes]
|
||||
list = entry[,list]
|
||||
|
||||
The type attributes are:
|
||||
|
||||
* s - String (default)
|
||||
* d - Decimal
|
||||
* x - Hexadecimal
|
||||
* b - Boolean ([1yYtT|0nNfF])
|
||||
* i - IP address, if networking is enabled
|
||||
* m - MAC address, if networking is enabled
|
||||
|
||||
The access attributes are:
|
||||
|
||||
* a - Any (default)
|
||||
* r - Read-only
|
||||
* o - Write-once
|
||||
* c - Change-default
|
||||
* w - Writeable, if CONFIG_ENV_WRITEABLE_LIST is enabled
|
||||
|
||||
CONFIG_ENV_FLAGS_LIST_DEFAULT defines the ``.flags`` variable in the
|
||||
default or embedded environment. Any association in ``.flags`` overrides
|
||||
an association in the static list.
|
||||
|
||||
If CONFIG_REGEX is defined, the variable name is evaluated as a regular
|
||||
expression. This allows multiple variables to define the same flags without
|
||||
explicitly listing them all.
|
||||
|
||||
23
env/Kconfig
vendored
23
env/Kconfig
vendored
@@ -34,6 +34,29 @@ config ENV_CALLBACK_LIST_STATIC
|
||||
If the callback name is not specified, then the callback is deleted.
|
||||
Spaces are also allowed anywhere in the list.
|
||||
|
||||
config ENV_FLAGS_LIST_STATIC
|
||||
string "Static flags list"
|
||||
default ""
|
||||
help
|
||||
The environment flags are associated with variables in a static
|
||||
list. Define this list in the following format:
|
||||
|
||||
type_attribute = [s|d|x|b|i|m]
|
||||
access_attribute = [a|r|o|c|w]
|
||||
attributes = type_attribute[access_attribute]
|
||||
entry = variable_name[:attributes]
|
||||
list = entry[,list]
|
||||
|
||||
The type attributes are s for string, d for decimal, x for
|
||||
hexadecimal and b for boolean. If networking is enabled, i can
|
||||
be used for IP addresses and m for MAC addresses.
|
||||
|
||||
The access attributes are a for any, r for read-only, o for
|
||||
write-once and c for change-default. When CONFIG_ENV_WRITEABLE_LIST
|
||||
is enabled, w can be used to mark variables as writable.
|
||||
|
||||
Spaces are also allowed anywhere in the list.
|
||||
|
||||
config SAVEENV
|
||||
def_bool y if CMD_SAVEENV
|
||||
|
||||
|
||||
@@ -413,7 +413,4 @@
|
||||
|
||||
/* UBI support */
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC "ethaddr:mw,serial#:sw,board_type:sw," \
|
||||
"sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
|
||||
|
||||
#endif /* __ARISTAINETOS2_CONFIG_H */
|
||||
|
||||
@@ -38,19 +38,6 @@
|
||||
#define CFG_EXTRA_ENV_SETTINGS \
|
||||
AHAB_ENV
|
||||
|
||||
#ifdef CONFIG_ENV_WRITEABLE_LIST
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC \
|
||||
"bootcount:dw," \
|
||||
"bootdelay:sw," \
|
||||
"bootlimit:dw," \
|
||||
"partitionset_active:sw," \
|
||||
"rastate:dw," \
|
||||
"sig_a:sw,sig_b:sw," \
|
||||
"target_env:sw," \
|
||||
"upgrade_available:dw," \
|
||||
"ustate:dw"
|
||||
#endif
|
||||
|
||||
/* Default location for tftp and bootm */
|
||||
|
||||
/* On CCP board, USDHC1 is for eMMC */
|
||||
|
||||
@@ -8,8 +8,4 @@
|
||||
#ifndef __CONFIGS_HMIBSC_H
|
||||
#define __CONFIGS_HMIBSC_H
|
||||
|
||||
/* PHY needs a longer aneg time */
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC "BOOT_A_LEFT:dw,BOOT_B_LEFT:dw,BOOT_ORDER:sw"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -44,18 +44,6 @@
|
||||
"then env set env_persisted 1; run save_env; fi;\0" \
|
||||
"save_env=env save; env save\0"
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC \
|
||||
"bootset:bw," \
|
||||
"clone_pending:bw," \
|
||||
"endurance_test:bw," \
|
||||
"env_persisted:bw," \
|
||||
"factory_reset:bw," \
|
||||
"fdtcontroladdr:xw," \
|
||||
"fitpart:dw," \
|
||||
"mmcpart:dw," \
|
||||
"production:bw," \
|
||||
"ustate:dw"
|
||||
|
||||
#else
|
||||
/* SD Card boot */
|
||||
#define ENV_EXTRA \
|
||||
|
||||
@@ -38,12 +38,4 @@
|
||||
func(MMC, mmc, 0) \
|
||||
BOOT_TARGET_USB(func)
|
||||
|
||||
#ifdef CONFIG_ENV_WRITEABLE_LIST
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC \
|
||||
"board_uuid:sw,board_name:sw,board_serial:sw,board_a5e:sw," \
|
||||
"mlfb:sw,fw_version:sw,seboot_version:sw," \
|
||||
"m2_manual_config:sw," \
|
||||
"eth1addr:mw,eth2addr:mw,watchdog_timeout_ms:dw,boot_targets:sw"
|
||||
#endif
|
||||
|
||||
#endif /* __CONFIG_IOT2050_H */
|
||||
|
||||
@@ -22,21 +22,6 @@
|
||||
#define EXTRA_BOOTPARAMS
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_BOOT_LOCKED
|
||||
#define EXTRA_ENV_FLAGS
|
||||
#else
|
||||
#define EXTRA_ENV_FLAGS "mmcdev:dw,"
|
||||
#endif
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC \
|
||||
"mmcpart:dw," \
|
||||
"mmcpart_committed:dw," \
|
||||
"ustate:dw," \
|
||||
"bootcount:dw," \
|
||||
"bootlimit:dw," \
|
||||
"upgrade_available:dw," \
|
||||
EXTRA_ENV_FLAGS
|
||||
|
||||
/* Physical Memory Map */
|
||||
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
|
||||
|
||||
|
||||
@@ -108,8 +108,6 @@
|
||||
*/
|
||||
#define CFG_SYS_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC "ethaddr:mw,eth1addr:mw,system1_addr:xw,serial#:sw,ethact:sw,ethprime:sw"
|
||||
|
||||
/* pass open firmware flat tree */
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
||||
@@ -37,10 +37,6 @@ enum env_flags_varaccess {
|
||||
#define ENV_FLAGS_VARTYPE_LOC 0
|
||||
#define ENV_FLAGS_VARACCESS_LOC 1
|
||||
|
||||
#ifndef CFG_ENV_FLAGS_LIST_STATIC
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC ""
|
||||
#endif
|
||||
|
||||
#if CONFIG_IS_ENABLED(NET)
|
||||
#ifdef CONFIG_REGEX
|
||||
#define ETHADDR_WILDCARD "\\d*"
|
||||
@@ -89,7 +85,7 @@ enum env_flags_varaccess {
|
||||
NET_FLAGS \
|
||||
NET6_FLAGS \
|
||||
SERIAL_FLAGS \
|
||||
CFG_ENV_FLAGS_LIST_STATIC
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC
|
||||
|
||||
#ifdef CONFIG_CMD_ENV_FLAGS
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user