nt9856x/BSP/u-boot/board/novatek/common/nvt_dfu.c
2023-03-28 15:07:53 +08:00

75 lines
2.0 KiB
C
Executable File

/**
NVT update handling api
@file nvt_ivot_fw_update_utils.c
@ingroup
@note
Copyright Novatek Microelectronics Corp. 2019. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
*/
#include <common.h>
#include <malloc.h>
#include <fs.h>
#include <memalign.h>
#include <linux/ctype.h>
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)
{
char *alt_boot;
#if (defined(CONFIG_CMD_DFU) && defined(CONFIG_DFU_RAM))
if (strncmp(interface, "ram", 3) == 0) {
alt_boot = DFU_ALT_INFO_RAM;
} else {
alt_boot = DFU_ALT_INFO;
}
#else
alt_boot = DFU_ALT_INFO;
#endif
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);
}