dfu: prepare the support of multiple interface
Split the function dfu_config_entities with 2 new functions - dfu_alt_init - dfu_alt_add Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
parent
cb986ba0fe
commit
9ada683055
2 changed files with 41 additions and 12 deletions
|
@ -439,13 +439,12 @@ void dfu_free_entities(void)
|
||||||
alt_num_cnt = 0;
|
alt_num_cnt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dfu_config_entities(char *env, char *interface, char *devstr)
|
int dfu_alt_init(int num, struct dfu_entity **dfu)
|
||||||
{
|
{
|
||||||
struct dfu_entity *dfu;
|
|
||||||
int i, ret;
|
|
||||||
char *s;
|
char *s;
|
||||||
|
int ret;
|
||||||
|
|
||||||
dfu_alt_num = dfu_find_alt_num(env);
|
dfu_alt_num = num;
|
||||||
debug("%s: dfu_alt_num=%d\n", __func__, dfu_alt_num);
|
debug("%s: dfu_alt_num=%d\n", __func__, dfu_alt_num);
|
||||||
|
|
||||||
dfu_hash_algo = NULL;
|
dfu_hash_algo = NULL;
|
||||||
|
@ -456,21 +455,49 @@ int dfu_config_entities(char *env, char *interface, char *devstr)
|
||||||
pr_err("Hash algorithm %s not supported\n", s);
|
pr_err("Hash algorithm %s not supported\n", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
dfu = calloc(sizeof(*dfu), dfu_alt_num);
|
*dfu = calloc(sizeof(struct dfu_entity), dfu_alt_num);
|
||||||
if (!dfu)
|
if (!*dfu)
|
||||||
return -1;
|
return -1;
|
||||||
for (i = 0; i < dfu_alt_num; i++) {
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dfu_alt_add(struct dfu_entity *dfu, char *interface, char *devstr, char *s)
|
||||||
|
{
|
||||||
|
struct dfu_entity *p_dfu;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (alt_num_cnt >= dfu_alt_num)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
p_dfu = &dfu[alt_num_cnt];
|
||||||
|
ret = dfu_fill_entity(p_dfu, s, alt_num_cnt, interface, devstr);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
list_add_tail(&p_dfu->list, &dfu_list);
|
||||||
|
alt_num_cnt++;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dfu_config_entities(char *env, char *interface, char *devstr)
|
||||||
|
{
|
||||||
|
struct dfu_entity *dfu;
|
||||||
|
int i, ret;
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
ret = dfu_alt_init(dfu_find_alt_num(env), &dfu);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
for (i = 0; i < dfu_alt_num; i++) {
|
||||||
s = strsep(&env, ";");
|
s = strsep(&env, ";");
|
||||||
ret = dfu_fill_entity(&dfu[i], s, alt_num_cnt, interface,
|
ret = dfu_alt_add(dfu, interface, devstr, s);
|
||||||
devstr);
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* We will free "dfu" in dfu_free_entities() */
|
/* We will free "dfu" in dfu_free_entities() */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_add_tail(&dfu[i].list, &dfu_list);
|
|
||||||
alt_num_cnt++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -143,6 +143,8 @@ struct dfu_entity {
|
||||||
#ifdef CONFIG_SET_DFU_ALT_INFO
|
#ifdef CONFIG_SET_DFU_ALT_INFO
|
||||||
void set_dfu_alt_info(char *interface, char *devstr);
|
void set_dfu_alt_info(char *interface, char *devstr);
|
||||||
#endif
|
#endif
|
||||||
|
int dfu_alt_init(int num, struct dfu_entity **dfu);
|
||||||
|
int dfu_alt_add(struct dfu_entity *dfu, char *interface, char *devstr, char *s);
|
||||||
int dfu_config_entities(char *s, char *interface, char *devstr);
|
int dfu_config_entities(char *s, char *interface, char *devstr);
|
||||||
void dfu_free_entities(void);
|
void dfu_free_entities(void);
|
||||||
void dfu_show_entities(void);
|
void dfu_show_entities(void);
|
||||||
|
|
Loading…
Reference in a new issue