This commit is contained in:
刘可亮
2024-09-03 11:16:08 +08:00
parent cf270df8d6
commit 803cac77d5
2931 changed files with 614364 additions and 31222 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023, Artinchip Technology Co., Ltd
* Copyright (c) 2023-2024, ArtInChip Technology Co., Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -12,6 +12,9 @@
#include <console.h>
#include <aic_common.h>
#include "upg_internal.h"
#ifdef AIC_USING_SID
#include "efuse.h"
#endif
#ifdef AICUPG_LOG_BUFFER_SUPPORT
#include <log_buf.h>
#endif
@@ -26,7 +29,9 @@ struct hwinfo {
u8 init_mode;
u8 curr_mode;
u8 boot_stage;
u8 reserved1[67];
u8 reserved1[3];
u32 chipid[4];
u8 reserved2[48];
};
struct cmd_rw_priv {
@@ -41,7 +46,7 @@ struct cmd_rw_priv {
* <- [RESP HEADER]
* <- [HWINFO DATA]
*/
static void CMD_GET_HWINFO_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void get_hwinfo_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
pr_debug("%s\n", __func__);
if (cmd->cmd != UPG_PROTO_CMD_GET_HWINFO)
@@ -49,14 +54,14 @@ static void CMD_GET_HWINFO_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_GET_HWINFO_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_hwinfo_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
/* No input data */
return 0;
}
static s32 CMD_GET_HWINFO_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_hwinfo_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -91,8 +96,11 @@ static s32 CMD_GET_HWINFO_read_output_data(struct upg_cmd *cmd, u8 *buf,
memset(&hw, 0, sizeof(hw));
memcpy(hw.magic, "HWINFO", 6);
hw.boot_stage = BOOT_STAGE_UBOOT;
hw.init_mode = upg_info.init.mode;
hw.init_mode = upg_info.init.mode_bits;
hw.curr_mode = upg_info.cfg.mode;
#ifdef AIC_USING_SID
efuse_read_chip_id(hw.chipid);
#endif
memcpy(buf + siz, &hw, sizeof(hw));
siz += sizeof(hw);
@@ -102,23 +110,23 @@ static s32 CMD_GET_HWINFO_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_GET_HWINFO_end(struct upg_cmd *cmd)
static void get_hwinfo_cmd_end(struct upg_cmd *cmd)
{
pr_debug("%s\n", __func__);
cmd_state_set_next(cmd, CMD_STATE_IDLE);
}
static void CMD_UNSUPPORTED_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void unsupported_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
}
static s32 CMD_UNSUPPORTED_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 unsupported_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
return len;
}
static s32 CMD_UNSUPPORTED_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 unsupported_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -137,7 +145,7 @@ static s32 CMD_UNSUPPORTED_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_UNSUPPORTED_end(struct upg_cmd *cmd)
static void unsupported_cmd_end(struct upg_cmd *cmd)
{
}
@@ -147,7 +155,7 @@ static void CMD_UNSUPPORTED_end(struct upg_cmd *cmd)
* -> [DATA from host]
* <- [RESP HEADER]
*/
static void CMD_WRITE_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void write_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
struct cmd_rw_priv *priv;
@@ -187,7 +195,7 @@ static void *hw_friendly_memcpy(void *dest, const void *src, size_t count)
return dest;
}
static s32 CMD_WRITE_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 write_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
struct cmd_rw_priv *priv;
u32 val, clen;
@@ -233,7 +241,7 @@ static s32 CMD_WRITE_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
return clen;
}
static s32 CMD_WRITE_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 write_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
struct cmd_rw_priv *priv;
struct resp_header resp;
@@ -259,7 +267,7 @@ static s32 CMD_WRITE_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
return siz;
}
static void CMD_WRITE_end(struct upg_cmd *cmd)
static void write_cmd_end(struct upg_cmd *cmd)
{
struct cmd_rw_priv *priv;
@@ -282,7 +290,7 @@ static void CMD_WRITE_end(struct upg_cmd *cmd)
* <- [RESP HEADER]
* <- [DATA to host]
*/
static void CMD_READ_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void read_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
static struct cmd_rw_priv read_info;
@@ -296,7 +304,7 @@ static void CMD_READ_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_READ_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 read_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
struct cmd_rw_priv *priv;
u32 val, clen;
@@ -326,7 +334,7 @@ static s32 CMD_READ_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
return clen;
}
static s32 CMD_READ_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 read_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
struct cmd_rw_priv *priv;
struct resp_header resp;
@@ -361,7 +369,7 @@ static s32 CMD_READ_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
return siz;
}
static void CMD_READ_end(struct upg_cmd *cmd)
static void read_cmd_end(struct upg_cmd *cmd)
{
struct cmd_rw_priv *priv;
@@ -387,7 +395,7 @@ static void CMD_READ_end(struct upg_cmd *cmd)
typedef int (*exec_func)(void);
static void CMD_EXEC_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void exec_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_EXEC)
return;
@@ -395,7 +403,7 @@ static void CMD_EXEC_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_EXEC_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 exec_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
u32 addr = 0, clen = 0;
exec_func fn;
@@ -427,7 +435,7 @@ out:
return clen;
}
static s32 CMD_EXEC_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
static s32 exec_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
{
struct resp_header resp;
u32 siz = 0;
@@ -446,7 +454,7 @@ static s32 CMD_EXEC_read_output_data(struct upg_cmd *cmd, u8 *buf, s32 len)
return siz;
}
static void CMD_EXEC_end(struct upg_cmd *cmd)
static void exec_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -461,7 +469,7 @@ static struct run_shell_info {
char shell_str[MAX_SHELL_CMD_STR_LEN];
} shell_info;
static void CMD_RUN_SHELL_STR_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void run_shell_str_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_RUN_SHELL_STR)
return;
@@ -470,7 +478,7 @@ static void CMD_RUN_SHELL_STR_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_RUN_SHELL_STR_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 run_shell_str_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct run_shell_info *shinfo;
@@ -520,7 +528,7 @@ static s32 CMD_RUN_SHELL_STR_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_RUN_SHELL_STR_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 run_shell_str_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct run_shell_info *shinfo;
@@ -545,7 +553,7 @@ static s32 CMD_RUN_SHELL_STR_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_RUN_SHELL_STR_end(struct upg_cmd *cmd)
static void run_shell_str_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -553,7 +561,7 @@ static void CMD_RUN_SHELL_STR_end(struct upg_cmd *cmd)
}
}
static void CMD_GET_MEM_BUF_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void get_mem_buf_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_GET_MEM_BUF)
return;
@@ -561,7 +569,7 @@ static void CMD_GET_MEM_BUF_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_GET_MEM_BUF_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_mem_buf_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
u32 memlen, clen = 0;
@@ -585,7 +593,7 @@ static s32 CMD_GET_MEM_BUF_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_GET_MEM_BUF_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_mem_buf_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -627,7 +635,7 @@ static s32 CMD_GET_MEM_BUF_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_GET_MEM_BUF_end(struct upg_cmd *cmd)
static void get_mem_buf_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -635,7 +643,7 @@ static void CMD_GET_MEM_BUF_end(struct upg_cmd *cmd)
}
}
static void CMD_FREE_MEM_BUF_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void free_mem_buf_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_FREE_MEM_BUF)
return;
@@ -643,7 +651,7 @@ static void CMD_FREE_MEM_BUF_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_FREE_MEM_BUF_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 free_mem_buf_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
u32 clen = 0;
@@ -668,7 +676,7 @@ static s32 CMD_FREE_MEM_BUF_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_FREE_MEM_BUF_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 free_mem_buf_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -688,7 +696,7 @@ static s32 CMD_FREE_MEM_BUF_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_FREE_MEM_BUF_end(struct upg_cmd *cmd)
static void free_mem_buf_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -696,7 +704,7 @@ static void CMD_FREE_MEM_BUF_end(struct upg_cmd *cmd)
}
}
static void CMD_SET_UPG_CFG_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void set_upg_cfg_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_SET_UPG_CFG)
return;
@@ -704,7 +712,7 @@ static void CMD_SET_UPG_CFG_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_SET_UPG_CFG_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 set_upg_cfg_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
u32 cfglen, clen = 0;
@@ -750,7 +758,7 @@ static s32 CMD_SET_UPG_CFG_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_SET_UPG_CFG_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 set_upg_cfg_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -770,7 +778,7 @@ static s32 CMD_SET_UPG_CFG_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_SET_UPG_CFG_end(struct upg_cmd *cmd)
static void set_upg_cfg_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -778,7 +786,7 @@ static void CMD_SET_UPG_CFG_end(struct upg_cmd *cmd)
}
}
static void CMD_SET_UPG_END_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void set_upg_end_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
if (cmd->cmd != UPG_PROTO_CMD_SET_UPG_END)
return;
@@ -787,7 +795,7 @@ static void CMD_SET_UPG_END_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_SET_UPG_END_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 set_upg_end_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
u32 param_len, clen = 0;
@@ -833,7 +841,7 @@ static s32 CMD_SET_UPG_END_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_SET_UPG_END_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 set_upg_end_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -853,7 +861,7 @@ static s32 CMD_SET_UPG_END_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_SET_UPG_END_end(struct upg_cmd *cmd)
static void set_upg_end_cmd_end(struct upg_cmd *cmd)
{
if (cmd->state == CMD_STATE_END) {
cmd->priv = 0;
@@ -861,19 +869,19 @@ static void CMD_SET_UPG_END_end(struct upg_cmd *cmd)
}
}
static void CMD_GET_LOG_SIZE_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void get_log_size_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_GET_LOG_SIZE_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_log_size_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
/* No input data for this command */
return 0;
}
static s32 CMD_GET_LOG_SIZE_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_log_size_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct resp_header resp;
@@ -908,12 +916,12 @@ static s32 CMD_GET_LOG_SIZE_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_GET_LOG_SIZE_end(struct upg_cmd *cmd)
static void get_log_size_end(struct upg_cmd *cmd)
{
cmd_state_set_next(cmd, CMD_STATE_IDLE);
}
static void CMD_GET_LOG_DATA_start(struct upg_cmd *cmd, s32 cmd_data_len)
static void get_log_data_cmd_start(struct upg_cmd *cmd, s32 cmd_data_len)
{
static struct cmd_rw_priv read_log;
@@ -924,7 +932,7 @@ static void CMD_GET_LOG_DATA_start(struct upg_cmd *cmd, s32 cmd_data_len)
cmd_state_init(cmd, CMD_STATE_START);
}
static s32 CMD_GET_LOG_DATA_write_input_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_log_data_cmd_write_input_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct cmd_rw_priv *priv;
@@ -955,7 +963,7 @@ static s32 CMD_GET_LOG_DATA_write_input_data(struct upg_cmd *cmd, u8 *buf,
return clen;
}
static s32 CMD_GET_LOG_DATA_read_output_data(struct upg_cmd *cmd, u8 *buf,
static s32 get_log_data_cmd_read_output_data(struct upg_cmd *cmd, u8 *buf,
s32 len)
{
struct cmd_rw_priv *priv;
@@ -983,9 +991,8 @@ static s32 CMD_GET_LOG_DATA_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
if (cmd->state == CMD_STATE_DATA_OUT) {
/* Enter read DATA state */
p = (char *)buf;
#ifdef AICUPG_LOG_BUFFER_SUPPORT
p = (char *)buf;
log_buf_read(p, len - siz);
#endif
priv->index += (len - siz);
@@ -996,7 +1003,7 @@ static s32 CMD_GET_LOG_DATA_read_output_data(struct upg_cmd *cmd, u8 *buf,
return siz;
}
static void CMD_GET_LOG_DATA_end(struct upg_cmd *cmd)
static void get_log_data_cmd_end(struct upg_cmd *cmd)
{
struct cmd_rw_priv *priv;
@@ -1015,87 +1022,87 @@ static void CMD_GET_LOG_DATA_end(struct upg_cmd *cmd)
static struct upg_cmd basic_cmd_list[] = {
{
UPG_PROTO_CMD_GET_HWINFO,
CMD_GET_HWINFO_start,
CMD_GET_HWINFO_write_input_data,
CMD_GET_HWINFO_read_output_data,
CMD_GET_HWINFO_end,
get_hwinfo_cmd_start,
get_hwinfo_cmd_write_input_data,
get_hwinfo_cmd_read_output_data,
get_hwinfo_cmd_end,
},
{
UPG_PROTO_CMD_GET_TRACEINFO,
CMD_UNSUPPORTED_start,
CMD_UNSUPPORTED_write_input_data,
CMD_UNSUPPORTED_read_output_data,
CMD_UNSUPPORTED_end,
unsupported_cmd_start,
unsupported_cmd_write_input_data,
unsupported_cmd_read_output_data,
unsupported_cmd_end,
},
{
UPG_PROTO_CMD_WRITE,
CMD_WRITE_start,
CMD_WRITE_write_input_data,
CMD_WRITE_read_output_data,
CMD_WRITE_end,
write_cmd_start,
write_cmd_write_input_data,
write_cmd_read_output_data,
write_cmd_end,
},
{
UPG_PROTO_CMD_READ,
CMD_READ_start,
CMD_READ_write_input_data,
CMD_READ_read_output_data,
CMD_READ_end,
read_cmd_start,
read_cmd_write_input_data,
read_cmd_read_output_data,
read_cmd_end,
},
{
UPG_PROTO_CMD_EXEC,
CMD_EXEC_start,
CMD_EXEC_write_input_data,
CMD_EXEC_read_output_data,
CMD_EXEC_end,
exec_cmd_start,
exec_cmd_write_input_data,
exec_cmd_read_output_data,
exec_cmd_end,
},
{
UPG_PROTO_CMD_RUN_SHELL_STR,
CMD_RUN_SHELL_STR_start,
CMD_RUN_SHELL_STR_write_input_data,
CMD_RUN_SHELL_STR_read_output_data,
CMD_RUN_SHELL_STR_end,
run_shell_str_cmd_start,
run_shell_str_cmd_write_input_data,
run_shell_str_cmd_read_output_data,
run_shell_str_cmd_end,
},
{
UPG_PROTO_CMD_SET_UPG_CFG,
CMD_SET_UPG_CFG_start,
CMD_SET_UPG_CFG_write_input_data,
CMD_SET_UPG_CFG_read_output_data,
CMD_SET_UPG_CFG_end,
set_upg_cfg_cmd_start,
set_upg_cfg_cmd_write_input_data,
set_upg_cfg_cmd_read_output_data,
set_upg_cfg_cmd_end,
},
{
UPG_PROTO_CMD_SET_UPG_END,
CMD_SET_UPG_END_start,
CMD_SET_UPG_END_write_input_data,
CMD_SET_UPG_END_read_output_data,
CMD_SET_UPG_END_end,
set_upg_end_cmd_start,
set_upg_end_cmd_write_input_data,
set_upg_end_cmd_read_output_data,
set_upg_end_cmd_end,
},
{
UPG_PROTO_CMD_GET_MEM_BUF,
CMD_GET_MEM_BUF_start,
CMD_GET_MEM_BUF_write_input_data,
CMD_GET_MEM_BUF_read_output_data,
CMD_GET_MEM_BUF_end,
get_mem_buf_cmd_start,
get_mem_buf_cmd_write_input_data,
get_mem_buf_cmd_read_output_data,
get_mem_buf_cmd_end,
},
{
UPG_PROTO_CMD_FREE_MEM_BUF,
CMD_FREE_MEM_BUF_start,
CMD_FREE_MEM_BUF_write_input_data,
CMD_FREE_MEM_BUF_read_output_data,
CMD_FREE_MEM_BUF_end,
free_mem_buf_cmd_start,
free_mem_buf_cmd_write_input_data,
free_mem_buf_cmd_read_output_data,
free_mem_buf_cmd_end,
},
{
UPG_PROTO_CMD_GET_LOG_SIZE,
CMD_GET_LOG_SIZE_start,
CMD_GET_LOG_SIZE_write_input_data,
CMD_GET_LOG_SIZE_read_output_data,
CMD_GET_LOG_SIZE_end,
get_log_size_start,
get_log_size_write_input_data,
get_log_size_read_output_data,
get_log_size_end,
},
{
UPG_PROTO_CMD_GET_LOG_DATA,
CMD_GET_LOG_DATA_start,
CMD_GET_LOG_DATA_write_input_data,
CMD_GET_LOG_DATA_read_output_data,
CMD_GET_LOG_DATA_end,
get_log_data_cmd_start,
get_log_data_cmd_write_input_data,
get_log_data_cmd_read_output_data,
get_log_data_cmd_end,
},
};