mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
env: migrate static flags list to Kconfig
Environment callbacks can already be configured from Kconfig with CONFIG_ENV_CALLBACK_LIST_STATIC, but static environment flags still require board headers to define CFG_ENV_FLAGS_LIST_STATIC. Add CONFIG_ENV_FLAGS_LIST_STATIC and use it as the only board-provided static environment flags list. Convert the remaining default-config users from CFG_ENV_FLAGS_LIST_STATIC to defconfig settings and drop the legacy header macro from ENV_FLAGS_LIST_STATIC. Move the environment flags format documentation out of README and into the developer environment documentation. Include the format in the Kconfig help as well. This lets boards configure writeable-list policy and type validation from defconfig without adding a config header solely for env flags. This preserves the behavior of default configs. Header-only cases that were inactive in upstream defconfigs are not converted into defconfig entries: iot2050 can add its list when enabling ENV_WRITEABLE_LIST, and smegw01 can add mmcdev:dw support if the unlocked SYS_BOOT_LOCKED=n configuration is needed. Signed-off-by: James Hilliard <james.hilliard1@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com> Reviewed-by: Walter Schweizer <walter.schweizer@siemens.com>
This commit is contained in:
45
README
45
README
@@ -799,7 +799,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
|
||||
@@ -1106,49 +1106,6 @@ Configuration Settings:
|
||||
- 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:
|
||||
|
||||
@@ -56,6 +56,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
|
||||
|
||||
@@ -56,6 +56,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