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;
|
||||
}
|
||||
|
||||
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;
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
dfu = calloc(sizeof(*dfu), dfu_alt_num);
|
||||
if (!dfu)
|
||||
*dfu = calloc(sizeof(struct dfu_entity), dfu_alt_num);
|
||||
if (!*dfu)
|
||||
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, ";");
|
||||
ret = dfu_fill_entity(&dfu[i], s, alt_num_cnt, interface,
|
||||
devstr);
|
||||
ret = dfu_alt_add(dfu, interface, devstr, s);
|
||||
if (ret) {
|
||||
/* We will free "dfu" in dfu_free_entities() */
|
||||
return -1;
|
||||
}
|
||||
|
||||
list_add_tail(&dfu[i].list, &dfu_list);
|
||||
alt_num_cnt++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -143,6 +143,8 @@ struct dfu_entity {
|
|||
#ifdef CONFIG_SET_DFU_ALT_INFO
|
||||
void set_dfu_alt_info(char *interface, char *devstr);
|
||||
#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);
|
||||
void dfu_free_entities(void);
|
||||
void dfu_show_entities(void);
|
||||
|
|
Loading…
Reference in a new issue