From f8af67f51d331c788d6643adf4032f4de137639a Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Tue, 27 Oct 2020 17:13:22 +0900 Subject: [PATCH] board: amlogic: add set_dfu_alt_info in odroid-n2.c Add set_dfu_alt_info in odroid-n2.c. Change-Id: Ic705a38a221af7dfcdb5a67321739c84a79f61df Signed-off-by: Jaehoon Chung --- board/amlogic/odroid-n2/odroid-n2.c | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c index caf7fd6810..5ed23a2fba 100644 --- a/board/amlogic/odroid-n2/odroid-n2.c +++ b/board/amlogic/odroid-n2/odroid-n2.c @@ -47,3 +47,75 @@ int misc_init_r(void) return 0; } + +#ifdef CONFIG_SET_DFU_ALT_INFO +#include +#include +#include +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; + + if (!strncmp(devstr, "0", 1)) + alt_boot = CONFIG_DFU_ALT_SYSTEM_2; + else + 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.34.1