diff options
| author | Rasmus Villemoes <[email protected]> | 2024-09-11 15:39:00 +0200 |
|---|---|---|
| committer | Mattijs Korpershoek <[email protected]> | 2024-10-01 10:55:09 +0200 |
| commit | 4b17845529f5f0c94fe68c2daba1948d0ee41bb2 (patch) | |
| tree | 65899b63101bc1ede3b4ca96e2d53a23e880caaf /include/env_callback.h | |
| parent | 3a0b829efc35227b1079a444f00e0729502197ad (diff) | |
dfu: define a callback function for the dfu_alt_info environment variable
I'm trying to use dfu-util for bootstrapping an stm32mp board. It
mostly works fine, but something goes horribly wrong as soon as I make
use of the ability to run arbitrary u-boot shell commands. The shell
commands themselves work fine, but the heuristic "dfu_alt_info may
have changed, we have to reinit" seems to cause the board and/or my
host machine to go into some bad state, and further dfu-util commands
fail.
U-Boot already has a mechanism whereby C code can be told about
changes to specific environment variables. So instead of always doing
re-init, add a hook to the dfu_alt_info variable so that we only do
set dfu_reinit_needed if the commands actually did modify that
variable.
Signed-off-by: Rasmus Villemoes <[email protected]>
Reviewed-by: Mattijs Korpershoek <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mattijs Korpershoek <[email protected]>
Diffstat (limited to 'include/env_callback.h')
| -rw-r--r-- | include/env_callback.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/env_callback.h b/include/env_callback.h index 8e500aaaf80..66cc8309e71 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -69,6 +69,12 @@ #define BOOTSTD_CALLBACK #endif +#ifdef CONFIG_DFU +#define DFU_CALLBACK "dfu_alt_info:dfu_alt_info," +#else +#define DFU_CALLBACK +#endif + /* * This list of callback bindings is static, but may be overridden by defining * a new association in the ".callbacks" environment variable. @@ -79,6 +85,7 @@ NET_CALLBACKS \ NET6_CALLBACKS \ BOOTSTD_CALLBACK \ + DFU_CALLBACK \ "loadaddr:loadaddr," \ SILENT_CALLBACK \ "stdin:console,stdout:console,stderr:console," \ |
