From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Mon, 22 Jul 2019 09:57:18 +0200 Subject: [U-Boot] [RFC PATCH 03/14] dfu: prepare the support of multiple interface In-Reply-To: <1563541046-6432-4-git-send-email-patrick.delaunay@st.com> References: <1563541046-6432-1-git-send-email-patrick.delaunay@st.com> <1563541046-6432-4-git-send-email-patrick.delaunay@st.com> Message-ID: <20190722095718.18fae749@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Patrick, > Split the function dfu_config_entities with 2 new functions > - dfu_alt_init > - dfu_alt_add Ok. > > Signed-off-by: Patrick Delaunay > --- > > drivers/dfu/dfu.c | 51 > +++++++++++++++++++++++++++++++++++++++------------ include/dfu.h > | 2 ++ 2 files changed, 41 insertions(+), 12 deletions(-) > > diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c > index eb3a3c6..79a652e 100644 > --- a/drivers/dfu/dfu.c > +++ b/drivers/dfu/dfu.c > @@ -438,13 +438,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; > @@ -455,21 +454,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; I'm aware that the dfu.c file in some places uses -1 or - as return value. I would prefer that with new code we shall add -. In this particular case it would be -ENOMEM > + > + 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; > - for (i = 0; i < dfu_alt_num; i++) { > > + 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; > diff --git a/include/dfu.h b/include/dfu.h > index bf51ab7..7d60ffc 100644 > --- a/include/dfu.h > +++ b/include/dfu.h > @@ -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); Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: