From 6e04b9aff76573010c70b478d69966ebc906c875 Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Mon, 11 May 2020 07:36:40 +0900 Subject: [PATCH] board: w400: add dfu functions to set dfu's information Add dfu function to set dfu's information. It's Tizen specific functions. Signed-off-by: Jaehoon Chung --- board/amlogic/w400/w400.c | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/board/amlogic/w400/w400.c b/board/amlogic/w400/w400.c index 47a51710dc..4fc1421970 100644 --- a/board/amlogic/w400/w400.c +++ b/board/amlogic/w400/w400.c @@ -18,3 +18,71 @@ 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; + + 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