Message ID | 20200616074048.7898-6-patrick.delaunay@st.com |
---|---|
State | New |
Headers | show |
Series | env: ext4: corrections and add test for env in ext4 | expand |
On Tue, 16 Jun 2020 at 01:40, Patrick Delaunay <patrick.delaunay at st.com> wrote: > > Add support of environment location with a new sandbox command > 'env_loc'. > > When the user change the environment location with the command > 'env_loc <location>' the env is reinitialized and saved; > the GD_FLG_ENV_DEFAULT flag is also updated. > > When the user set the same env location, the environment is > re-loaded. > > Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com> > --- > > Changes in v2: > - change cmd_tbl_t to struct cmd_tbl > > board/sandbox/sandbox.c | 42 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 41 insertions(+), 1 deletion(-) Reviewed-by: Simon Glass <sjg at chromium.org>
On Tue, Jun 16, 2020 at 09:40:44AM +0200, Patrick Delaunay wrote: > Add support of environment location with a new sandbox command > 'env_loc'. > > When the user change the environment location with the command > 'env_loc <location>' the env is reinitialized and saved; > the GD_FLG_ENV_DEFAULT flag is also updated. > > When the user set the same env location, the environment is > re-loaded. > > Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com> > --- > > Changes in v2: > - change cmd_tbl_t to struct cmd_tbl > > board/sandbox/sandbox.c | 42 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 41 insertions(+), 1 deletion(-) This is for testing, which is why it's on sandbox? But I think we should have this be a generic opt-in feature as changing where environment is saved at run time has use cases when we have multiple available. Thanks!
Hi, > From: Tom Rini <trini at konsulko.com> > Sent: jeudi 18 juin 2020 21:17 > > On Tue, Jun 16, 2020 at 09:40:44AM +0200, Patrick Delaunay wrote: > > > Add support of environment location with a new sandbox command > > 'env_loc'. > > > > When the user change the environment location with the command > > 'env_loc <location>' the env is reinitialized and saved; the > > GD_FLG_ENV_DEFAULT flag is also updated. > > > > When the user set the same env location, the environment is re-loaded. > > > > Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com> > > --- > > > > Changes in v2: > > - change cmd_tbl_t to struct cmd_tbl > > > > board/sandbox/sandbox.c | 42 > > ++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 41 insertions(+), 1 deletion(-) > > This is for testing, which is why it's on sandbox? But I think we should have this > be a generic opt-in feature as changing where environment is saved at run time > has use cases when we have multiple available. Thanks! Yes in my mind it was only for testing on sandbox.... But I agree, I can a add a opt-in generic command to select and load ENV on one target. Someting as "env load [<target>] " which loads with the request backend and update gd->env_load_prio With <target> = name of the name define in backend with ENV_NAME macro And using the default location gd->env_load_prio when absent. Or split in 2 new commands - env select <target> - env load Perhaps this last proposal with 2 command is more flexible.... to be combined with other command (env save / env erase) if this proposal is OK, I will work on it..... Patrick
On Fri, Jun 19, 2020 at 02:40:06PM +0000, Patrick DELAUNAY wrote: > Hi, > > > From: Tom Rini <trini at konsulko.com> > > Sent: jeudi 18 juin 2020 21:17 > > > > On Tue, Jun 16, 2020 at 09:40:44AM +0200, Patrick Delaunay wrote: > > > > > Add support of environment location with a new sandbox command > > > 'env_loc'. > > > > > > When the user change the environment location with the command > > > 'env_loc <location>' the env is reinitialized and saved; the > > > GD_FLG_ENV_DEFAULT flag is also updated. > > > > > > When the user set the same env location, the environment is re-loaded. > > > > > > Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com> > > > --- > > > > > > Changes in v2: > > > - change cmd_tbl_t to struct cmd_tbl > > > > > > board/sandbox/sandbox.c | 42 > > > ++++++++++++++++++++++++++++++++++++++++- > > > 1 file changed, 41 insertions(+), 1 deletion(-) > > > > This is for testing, which is why it's on sandbox? But I think we should have this > > be a generic opt-in feature as changing where environment is saved at run time > > has use cases when we have multiple available. Thanks! > > Yes in my mind it was only for testing on sandbox.... > > But I agree, I can a add a opt-in generic command to select and load ENV on one target. > > Someting as "env load [<target>] " which loads with the request backend and update gd->env_load_prio > > With <target> = name of the name define in backend with ENV_NAME macro > And using the default location gd->env_load_prio when absent. > > Or split in 2 new commands > > - env select <target> > - env load > > Perhaps this last proposal with 2 command is more flexible.... > to be combined with other command (env save / env erase) > > if this proposal is OK, I will work on it..... Sounds good to me, thanks!
diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c index 9cb5fe5c75..bd99141fa8 100644 --- a/board/sandbox/sandbox.c +++ b/board/sandbox/sandbox.c @@ -4,6 +4,7 @@ */ #include <common.h> +#include <command.h> #include <cpu_func.h> #include <cros_ec.h> #include <dm.h> @@ -21,6 +22,9 @@ */ gd_t *gd; +/* env location: current location used during test */ +static enum env_location sandbox_env_location = ENVL_NOWHERE; + /* Add a simple GPIO device */ U_BOOT_DEVICE(gpio_sandbox) = { .name = "gpio_sandbox", @@ -53,9 +57,45 @@ enum env_location env_get_location(enum env_operation op, int prio) gd->env_load_prio = 0; - return ENVL_NOWHERE; + return sandbox_env_location; } +static int do_env_loc(struct cmd_tbl *cmdtp, int flag, int argc, + char * const argv[]) +{ + enum env_location loc; + + if (argc < 2) + return CMD_RET_USAGE; + + loc = (enum env_location)simple_strtoul(argv[1], NULL, 10); + if (loc >= ENVL_COUNT) + return CMD_RET_FAILURE; + + if (sandbox_env_location != loc) { + sandbox_env_location = loc; + if (loc == ENVL_NOWHERE) { + gd->flags |= GD_FLG_ENV_DEFAULT; + gd->env_valid = ENV_VALID; + } else { + if (gd->flags & GD_FLG_ENV_DEFAULT) { + gd->flags &= ~GD_FLG_ENV_DEFAULT; + if (!env_init()) + env_save(); + } + } + } else { + if (!env_init()) + env_load(); + } + + return CMD_RET_SUCCESS; +} + +U_BOOT_CMD(env_loc, 2, 1, do_env_loc, + "set the environment location", "[loc]" +); + int dram_init(void) { gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
Add support of environment location with a new sandbox command 'env_loc'. When the user change the environment location with the command 'env_loc <location>' the env is reinitialized and saved; the GD_FLG_ENV_DEFAULT flag is also updated. When the user set the same env location, the environment is re-loaded. Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com> --- Changes in v2: - change cmd_tbl_t to struct cmd_tbl board/sandbox/sandbox.c | 42 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-)