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:
James Hilliard
2026-05-25 13:44:40 -06:00
committed by Tom Rini
parent d5888d509c
commit 5e41a5deb4
18 changed files with 72 additions and 106 deletions
+40
View File
@@ -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.