
If CONFIG_SET_DFU_ALT_INFO is enabled, the dfu_alt_info environment variable is dynamically set when initializing the DFU entities, which is done as part of normal flow of a DFU operation.
The USB DFU boot support will set it's own specific value for dfu_alt_info before performing the DFU operation. This means that if CONFIG_SET_DFU_ALT_INFO is enabled, the dfu_alt_info environment variable that the USB DFU boot path had set is overwritten, causing USB DFU boot to fail.
Likewise, if the user sets their own value for dfu_alt_info, say at the U-Boot prompt, it get's overwritten if CONFIG_SET_DFU_ALT_INFO is enabled.
This patch will first check that dfu_alt_info isn't already set before calling set_dfu_alt_info(), when CONFIG_SET_DFU_ALT_INFO is enabled.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- drivers/dfu/dfu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c index 756569217bb..ab8abae1d89 100644 --- a/drivers/dfu/dfu.c +++ b/drivers/dfu/dfu.c @@ -169,10 +169,13 @@ int dfu_init_env_entities(char *interface, char *devstr) dfu_reinit_needed = false; dfu_alt_info_changed = false;
+ str_env = env_get("dfu_alt_info"); #ifdef CONFIG_SET_DFU_ALT_INFO - set_dfu_alt_info(interface, devstr); + if (!str_env) { + set_dfu_alt_info(interface, devstr); + str_env = env_get("dfu_alt_info"); + } #endif - str_env = env_get("dfu_alt_info"); if (!str_env) { pr_err(""dfu_alt_info" env variable not defined!\n"); return -EINVAL;