aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2020-03-18 09:25:00 +0100
committerPatrick Delaunay <patrick.delaunay@st.com>2020-05-14 09:02:12 +0200
commit468f0508b58b02943942c47b66645a05244f2bbf (patch)
tree5fc5106f04290e71e1c2a677d3103bfe38cbd737 /arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
parent6ce1f4ad8d300272e7584a514d9be0c334754ff7 (diff)
stm32mp: stm32prog: add serial link support
Add a support of UART, using the same protocol than MCU STM32. See "AN5275: USB DFU/USART protocols used in STM32MP1 Series bootloaders" for details. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
Diffstat (limited to 'arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c')
-rw-r--r--arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
index d127afefaa..0967bbc11a 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
@@ -1486,6 +1486,7 @@ void stm32prog_next_phase(struct stm32prog_data *data)
}
/* found next selected partition */
+ data->dfu_seq = 0;
data->cur_part = NULL;
data->phase = PHASE_END;
found = false;
@@ -1653,6 +1654,7 @@ int stm32prog_dfu_init(struct stm32prog_data *data)
int stm32prog_init(struct stm32prog_data *data, ulong addr, ulong size)
{
memset(data, 0x0, sizeof(*data));
+ data->read_phase = PHASE_RESET;
data->phase = PHASE_FLASHLAYOUT;
return parse_flash_layout(data, addr, size);
@@ -1664,6 +1666,7 @@ void stm32prog_clean(struct stm32prog_data *data)
dfu_free_entities();
free(data->part_array);
free(data->otp_part);
+ free(data->buffer);
free(data->header_data);
}
@@ -1709,6 +1712,7 @@ void dfu_initiated_callback(struct dfu_entity *dfu)
/* force the saved offset for the current partition */
if (dfu->alt == stm32prog_data->cur_part->alt_id) {
dfu->offset = stm32prog_data->offset;
+ stm32prog_data->dfu_seq = 0;
pr_debug("dfu offset = 0x%llx\n", dfu->offset);
}
}