Skip to content
Snippets Groups Projects
Commit 78398652 authored by Simon Glass's avatar Simon Glass Committed by Tom Rini
Browse files

bootm: Tidy up use of autostart env var


This has different semantics in different places. Go with the bootm method
and put it in a common function so that the behaviour is consistent in
U-Boot. Update the docs.

To be clear, this changes the way that 'bootelf' and standalone boot
work. Before, if autostart was set to "fred" or "YES", for example, they
would consider that a "yes". This may change behaviour for some boards,
but the only in-tree boards which mention autostart use "no" to disable
it, which will still work.

Signed-off-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
Suggested-by: default avatarWolfgang Denk <wd@denx.de>
parent 1d192d5b
No related branches found
No related tags found
No related merge requests found
......@@ -26,12 +26,9 @@ DECLARE_GLOBAL_DATA_PTR;
static int do_bootm_standalone(int flag, int argc, char *const argv[],
bootm_headers_t *images)
{
char *s;
int (*appl)(int, char *const[]);
/* Don't start if "autostart" is set to "no" */
s = env_get("autostart");
if ((s != NULL) && !strcmp(s, "no")) {
if (!env_get_autostart()) {
env_set_hex("filesize", images->os.image_len);
return 0;
}
......
......@@ -140,9 +140,7 @@ int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
int bootm_maybe_autostart(struct cmd_tbl *cmdtp, const char *cmd)
{
const char *ep = env_get("autostart");
if (ep && !strcmp(ep, "yes")) {
if (env_get_autostart()) {
char *local_args[2];
local_args[0] = (char *)cmd;
local_args[1] = NULL;
......
......@@ -41,7 +41,6 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
unsigned long addr; /* Address of the ELF image */
unsigned long rc; /* Return value from user code */
char *sload = NULL;
const char *ep = env_get("autostart");
int rcode = 0;
/* Consume 'bootelf' */
......@@ -69,7 +68,7 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
else
addr = load_elf_image_shdr(addr);
if (ep && !strcmp(ep, "no"))
if (!env_get_autostart())
return rcode;
printf("## Starting application at 0x%08lx ...\n", addr);
......
......@@ -179,8 +179,9 @@ autostart
be automatically started (by internally calling
"bootm")
If set to "no", a standalone image passed to the
"bootm" command will be copied to the load address
If unset, or set to "1"/"yes"/"true" (case insensitive, just the first
character is enough), a standalone image
passed to the "bootm" command will be copied to the load address
(and eventually uncompressed), but NOT be started.
This can be used to load and uncompress arbitrary
data.
......
......@@ -235,6 +235,11 @@ int env_get_yesno(const char *var)
1 : 0;
}
bool env_get_autostart(void)
{
return env_get_yesno("autostart") == 1;
}
/*
* Look up the variable from the default environment
*/
......
......@@ -133,6 +133,13 @@ int env_get_f(const char *name, char *buf, unsigned int len);
*/
int env_get_yesno(const char *var);
/**
* env_get_autostart() - Check if autostart is enabled
*
* @return true if the "autostart" env var exists and is set to "yes"
*/
bool env_get_autostart(void);
/**
* env_set() - set an environment variable
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment