mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-25 13:14:19 +08:00
dfu: Extract common DFU code to handle "dfu_alt_info" environment variable
New dfu_init_env_entities() function has been extracted from cmd_dfu.c and stored at dfu core. This is a dfu centric code, so it shall be processed in the core. Change-Id: I756c5de922fa31399d8804eaadc004ee98844ec2 Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Tested-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
3668ce3c80
commit
765c5ae5bc
@ -17,26 +17,15 @@
|
||||
|
||||
static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
const char *str_env;
|
||||
char *s = "dfu";
|
||||
int ret, i = 0;
|
||||
char *env_bkp;
|
||||
|
||||
if (argc < 3)
|
||||
return CMD_RET_USAGE;
|
||||
|
||||
str_env = getenv("dfu_alt_info");
|
||||
if (str_env == NULL) {
|
||||
printf("%s: \"dfu_alt_info\" env variable not defined!\n",
|
||||
__func__);
|
||||
return CMD_RET_FAILURE;
|
||||
}
|
||||
|
||||
env_bkp = strdup(str_env);
|
||||
ret = dfu_config_entities(env_bkp, argv[1],
|
||||
(int)simple_strtoul(argv[2], NULL, 10));
|
||||
ret = dfu_init_env_entities(argv[1], simple_strtoul(argv[2], NULL, 10));
|
||||
if (ret)
|
||||
return CMD_RET_FAILURE;
|
||||
return ret;
|
||||
|
||||
if (argc > 3 && strcmp(argv[3], "list") == 0) {
|
||||
dfu_show_entities();
|
||||
@ -67,7 +56,6 @@ exit:
|
||||
g_dnl_unregister();
|
||||
done:
|
||||
dfu_free_entities();
|
||||
free(env_bkp);
|
||||
|
||||
if (dfu_reset())
|
||||
run_command("reset", 0);
|
||||
|
@ -41,6 +41,29 @@ static int dfu_find_alt_num(const char *s)
|
||||
return ++i;
|
||||
}
|
||||
|
||||
int dfu_init_env_entities(char *interface, int dev)
|
||||
{
|
||||
const char *str_env;
|
||||
char *env_bkp;
|
||||
int ret;
|
||||
|
||||
str_env = getenv("dfu_alt_info");
|
||||
if (!str_env) {
|
||||
error("\"dfu_alt_info\" env variable not defined!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
env_bkp = strdup(str_env);
|
||||
ret = dfu_config_entities(env_bkp, interface, dev);
|
||||
if (ret) {
|
||||
error("DFU entities configuration failed!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
free(env_bkp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned char *dfu_buf;
|
||||
static unsigned long dfu_buf_size = CONFIG_SYS_DFU_DATA_BUF_SIZE;
|
||||
|
||||
|
@ -113,6 +113,7 @@ struct dfu_entity *dfu_get_entity(int alt);
|
||||
char *dfu_extract_token(char** e, int *n);
|
||||
void dfu_trigger_reset(void);
|
||||
bool dfu_reset(void);
|
||||
int dfu_init_env_entities(char *interface, int dev);
|
||||
|
||||
int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
|
||||
int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
|
||||
|
Loading…
Reference in New Issue
Block a user