From b3b28971549510726467d1e01e6b8f3fe83ce4de Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Fri, 27 Sep 2019 19:13:24 +0900 Subject: [PATCH] rpi: add dfu functions to use thor Add dfu functions to use thor. Change-Id: Ia59960dc05c3680ccef5b6fdc9108bb0be249fb4 Signed-off-by: Jaehoon Chung --- board/raspberrypi/rpi/rpi.c | 65 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c index f708029..4943759 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -581,3 +581,68 @@ int checkboard(void) { return 0; } + +#ifdef CONFIG_SET_DFU_ALT_INFO +static char *get_dfu_alt_system(char *interface, char *devstr) +{ + return env_get("dfu_alt_system"); +} + +static char *get_dfu_alt_boot(char *interface, char *devstr) +{ + struct mmc *mmc; + char *alt_boot; + int dev_num; + + dev_num = simple_strtoul(devstr, NULL, 10); + + mmc = find_mmc_device(dev_num); + if (!mmc) + return NULL; + + if (mmc_init(mmc)) + return NULL; + + alt_boot = CONFIG_DFU_ALT_SYSTEM; + + return alt_boot; +} + +void set_dfu_alt_info(char *interface, char *devstr) +{ + size_t buf_size = CONFIG_SET_DFU_ALT_BUF_LEN; + ALLOC_CACHE_ALIGN_BUFFER(char, buf, buf_size); + char *alt_info = "Settings not found!"; + char *status = "error!\n"; + char *alt_setting; + char *alt_sep; + int offset = 0; + + puts("DFU alt info setting: "); + + alt_setting = get_dfu_alt_boot(interface, devstr); + if (alt_setting) { + env_set("dfu_alt_boot", alt_setting); + offset = snprintf(buf, buf_size, "%s", alt_setting); + } + + alt_setting = get_dfu_alt_system(interface, devstr); + if (alt_setting) { + if (offset) + alt_sep = ";"; + else + alt_sep = ""; + + offset += snprintf(buf + offset, buf_size - offset, + "%s%s", alt_sep, alt_setting); + } + + if (offset) { + alt_info = buf; + status = "done\n"; + } + + env_set("dfu_alt_info", alt_info); + puts(status); +} +#endif -- 2.7.4