env: Add a baudrate env handler
Remove the hard-coded baudrate handler and use a callback instead Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
committed by
Tom Rini
parent
a9f51c9b43
commit
32057717e0
@@ -77,12 +77,6 @@ ulong load_addr = CONFIG_SYS_LOAD_ADDR; /* Default Load Address */
|
||||
ulong save_addr; /* Default Save Address */
|
||||
ulong save_size; /* Default Save Size (in bytes) */
|
||||
|
||||
/*
|
||||
* Table with supported baudrates (defined in config_xyz.h)
|
||||
*/
|
||||
static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
|
||||
#define N_BAUDRATES (sizeof(baudrate_table) / sizeof(baudrate_table[0]))
|
||||
|
||||
/*
|
||||
* This variable is incremented on each do_env_set(), so it can
|
||||
* be used via get_env_id() as an indication, if the environment
|
||||
@@ -275,47 +269,6 @@ int env_change_ok(const ENTRY *item, const char *newval, enum env_op op,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* When we change baudrate, or we are doing an env default -a
|
||||
* (which will erase all variables prior to calling this),
|
||||
* we want the baudrate to actually change - for real.
|
||||
*/
|
||||
if (op != env_op_create || /* variable exists */
|
||||
(flag & H_NOCLEAR) == 0) { /* or env is clear */
|
||||
/*
|
||||
* Switch to new baudrate if new baudrate is supported
|
||||
*/
|
||||
if (strcmp(name, "baudrate") == 0) {
|
||||
int baudrate = simple_strtoul(newval, NULL, 10);
|
||||
int i;
|
||||
for (i = 0; i < N_BAUDRATES; ++i) {
|
||||
if (baudrate == baudrate_table[i])
|
||||
break;
|
||||
}
|
||||
if (i == N_BAUDRATES) {
|
||||
if ((flag & H_FORCE) == 0)
|
||||
printf("## Baudrate %d bps not "
|
||||
"supported\n", baudrate);
|
||||
return 1;
|
||||
}
|
||||
if (gd->baudrate == baudrate) {
|
||||
/* If unchanged, we just say it's OK */
|
||||
return 0;
|
||||
}
|
||||
printf("## Switch baudrate to %d bps and"
|
||||
"press ENTER ...\n", baudrate);
|
||||
udelay(50000);
|
||||
gd->baudrate = baudrate;
|
||||
#if defined(CONFIG_PPC) || defined(CONFIG_MCF52x2)
|
||||
gd->bd->bi_baudrate = baudrate;
|
||||
#endif
|
||||
|
||||
serial_setbrg();
|
||||
udelay(50000);
|
||||
while (getc() != '\r')
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Some variables should be updated when the corresponding
|
||||
|
||||
Reference in New Issue
Block a user