diff --git a/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c b/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c index 21199d643..e28dd49fa 100644 --- a/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c +++ b/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c @@ -104,8 +104,8 @@ void cfa10036_detect_hw(void) return; } - globalvar_add_simple("board.variant"); - setenv("global.board.variant", board_name); + globalvar_add_simple("board.variant", board_name); + pr_info("Booting on a CFA10036 with %s\n", board_name); } diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c index 2b2d085a5..6e4fa7248 100644 --- a/arch/arm/boards/vexpress/init.c +++ b/arch/arm/boards/vexpress/init.c @@ -107,8 +107,7 @@ static int vexpress_devices_init(void) devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); - globalvar_add_simple("hostname"); - setenv("global.hostname", v2m_init->hostname); + globalvar_add_simple("hostname", v2m_init->hostname); return 0; } diff --git a/commands/bootm.c b/commands/bootm.c index 97a6698b9..eefcae3a7 100644 --- a/commands/bootm.c +++ b/commands/bootm.c @@ -164,10 +164,10 @@ err_out: static int bootm_init(void) { - globalvar_add_simple("bootm.image"); - globalvar_add_simple("bootm.oftree"); + globalvar_add_simple("bootm.image", NULL); + globalvar_add_simple("bootm.oftree", NULL); if (IS_ENABLED(CONFIG_CMD_BOOTM_INITRD)) - globalvar_add_simple("bootm.initrd"); + globalvar_add_simple("bootm.initrd", NULL); return 0; } diff --git a/commands/global.c b/commands/global.c index 427a231a9..c526e6571 100644 --- a/commands/global.c +++ b/commands/global.c @@ -23,21 +23,6 @@ #include #include -static int globalvar_set(char* name, char* value) -{ - int ret; - - ret = globalvar_add_simple(name); - - if (value) { - char *tmp = asprintf("global.%s", name); - ret = setenv(tmp, value); - free(tmp); - } - - return ret ? 1 : 0; -} - static int do_global(int argc, char *argv[]) { int opt; @@ -72,7 +57,7 @@ static int do_global(int argc, char *argv[]) return 0; } - return globalvar_set(argv[0], value); + return globalvar_add_simple(argv[0], value); } BAREBOX_CMD_HELP_START(global) diff --git a/common/globalvar.c b/common/globalvar.c index abcd881ad..6fd1d8852 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -2,6 +2,8 @@ #include #include #include +#include +#include static struct device_d global_device = { .name = "global", @@ -61,9 +63,15 @@ void globalvar_set_match(const char *match, const char *val) * * add a new globalvar named 'name' */ -int globalvar_add_simple(const char *name) +int globalvar_add_simple(const char *name, const char *value) { - return globalvar_add(name, NULL, NULL, 0); + int ret; + + ret = globalvar_add(name, NULL, NULL, 0); + if (ret && ret != -EEXIST) + return ret; + + return dev_set_param(&global_device, name, value); } static int globalvar_init(void) diff --git a/common/reset_source.c b/common/reset_source.c index 2a7f9ff6c..fdc30f485 100644 --- a/common/reset_source.c +++ b/common/reset_source.c @@ -36,8 +36,8 @@ EXPORT_SYMBOL(set_reset_source); /* ensure this runs after the 'global' device is already registerd */ static int init_reset_source(void) { - globalvar_add_simple("system.reset"); - set_reset_source(RESET_UKWN); + globalvar_add_simple("system.reset", reset_src_names[RESET_UKWN]); + return 0; } diff --git a/include/globalvar.h b/include/globalvar.h index eb3728717..c2a13b365 100644 --- a/include/globalvar.h +++ b/include/globalvar.h @@ -4,7 +4,7 @@ #include #ifdef CONFIG_GLOBALVAR -int globalvar_add_simple(const char *name); +int globalvar_add_simple(const char *name, const char *value); int globalvar_add(const char *name, int (*set)(struct device_d *dev, struct param_d *p, const char *val), @@ -13,7 +13,7 @@ int globalvar_add(const char *name, char *globalvar_get_match(const char *match, const char *separator); void globalvar_set_match(const char *match, const char *val); #else -static inline int globalvar_add_simple(const char *name) +static inline int globalvar_add_simple(const char *name, const char *value) { return 0; } diff --git a/net/dhcp.c b/net/dhcp.c index 1261b2d73..cafefcb40 100644 --- a/net/dhcp.c +++ b/net/dhcp.c @@ -667,7 +667,7 @@ static void dhcp_global_add(const char *var) if (!var_global) return; - globalvar_add_simple(var_global); + globalvar_add_simple(var_global, NULL); free(var_global); }