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[])
|
static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
{
|
{
|
||||||
const char *str_env;
|
|
||||||
char *s = "dfu";
|
char *s = "dfu";
|
||||||
int ret, i = 0;
|
int ret, i = 0;
|
||||||
char *env_bkp;
|
|
||||||
|
|
||||||
if (argc < 3)
|
if (argc < 3)
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
|
|
||||||
str_env = getenv("dfu_alt_info");
|
ret = dfu_init_env_entities(argv[1], simple_strtoul(argv[2], NULL, 10));
|
||||||
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));
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return CMD_RET_FAILURE;
|
return ret;
|
||||||
|
|
||||||
if (argc > 3 && strcmp(argv[3], "list") == 0) {
|
if (argc > 3 && strcmp(argv[3], "list") == 0) {
|
||||||
dfu_show_entities();
|
dfu_show_entities();
|
||||||
|
|
@ -67,7 +56,6 @@ exit:
|
||||||
g_dnl_unregister();
|
g_dnl_unregister();
|
||||||
done:
|
done:
|
||||||
dfu_free_entities();
|
dfu_free_entities();
|
||||||
free(env_bkp);
|
|
||||||
|
|
||||||
if (dfu_reset())
|
if (dfu_reset())
|
||||||
run_command("reset", 0);
|
run_command("reset", 0);
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,29 @@ static int dfu_find_alt_num(const char *s)
|
||||||
return ++i;
|
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 char *dfu_buf;
|
||||||
static unsigned long dfu_buf_size = CONFIG_SYS_DFU_DATA_BUF_SIZE;
|
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);
|
char *dfu_extract_token(char** e, int *n);
|
||||||
void dfu_trigger_reset(void);
|
void dfu_trigger_reset(void);
|
||||||
bool dfu_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_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);
|
int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue