* Copyright (c) Huawei Technologies Co., Ltd. 2025. 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 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef TS_AICPU_MSG_H
#define TS_AICPU_MSG_H
#ifdef __cplusplus
extern "C" {
#endif
enum tag_ts_aicpu_mail_box_cmd_type {
AICPU_MSG_VERSION = 0,
AICPU_MODEL_OPERATE,
AICPU_MODEL_OPERATE_RESPONSE,
AIC_TASK_REPORT,
AICPU_ACTIVE_STREAM,
AICPU_NOTIFY_RECORD,
AICPU_DATADUMP_REPORT,
AICPU_DATADUMP_LOADINFO,
AICPU_DATADUMP_RESPONSE,
AICPU_ABNORMAL,
AICPU_TASK_ACTIVE_FOR_WAIT,
AICPU_NOTICE_TS_PID,
AICPU_RECORD,
AICPU_TIMEOUT_CONFIG,
AICPU_TIMEOUT_CONFIG_RESPONSE,
CALLBACK_RECORD,
AICPU_ERR_MSG_REPORT,
AICPU_FFTS_PLUS_DATADUMP_REPORT,
AICPU_INFO_LOAD,
AICPU_INFO_LOAD_RESPONSE,
AIC_ERROR_REPORT,
INVALID_AICPU_CMD,
};
typedef struct tag_ts_aicpu_msg_version {
volatile uint16_t magic_num;
volatile uint16_t version;
} ts_aicpu_msg_version_t;
typedef struct tag_ts_aicpu_active_stream {
volatile uint16_t stream_id;
volatile uint8_t reserved[6];
volatile uint64_t aicpu_stamp;
} ts_aicpu_active_stream_t;
typedef struct tag_ts_aicpu_model_operate {
volatile uint64_t arg_ptr;
volatile uint16_t sq_id;
volatile uint16_t task_id;
volatile uint16_t model_id;
volatile uint8_t cmd_type;
volatile uint8_t reserved;
} ts_aicpu_model_operate_t;
typedef struct tag_ts_aicpu_model_operate_response {
volatile uint8_t cmd_type;
volatile uint8_t sub_cmd_type;
volatile uint16_t model_id;
volatile uint16_t task_id;
volatile uint16_t result_code;
volatile uint16_t sq_id;
volatile uint8_t reserved[2];
} ts_aicpu_model_operate_response_t;
typedef struct tag_ts_to_aicpu_task_report {
volatile uint16_t model_id;
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint16_t result_code;
} ts_to_aicpu_task_report_t;
typedef struct tag_ts_to_aicpu_aic_err_report {
volatile uint64_t aiv_err_bitmap;
volatile uint32_t aic_err_bitmap;
volatile uint16_t result_code;
} ts_to_aicpu_aic_err_report_t;
typedef struct tag_ts_aicpu_notify {
volatile uint32_t notify_id;
volatile uint16_t ret_code;
} ts_aicpu_notify_t;
typedef struct tag_ts_aicpu_event {
volatile uint32_t record_id;
volatile uint8_t record_type;
volatile uint8_t reserved;
volatile uint16_t ret_code;
volatile uint16_t fault_task_id;
volatile uint16_t fault_stream_id;
} ts_aicpu_record_t;
typedef struct tag_ts_to_aicpu_datadump {
volatile uint16_t model_id;
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint16_t stream_id1;
volatile uint16_t task_id1;
volatile uint16_t ack_stream_id;
volatile uint16_t ack_task_id;
volatile uint8_t reserved[2];
} ts_to_aicpu_datadump_t;
typedef struct tag_ts_to_aicpu_ffts_plus_datadump {
volatile uint16_t model_id;
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint16_t stream_id1;
volatile uint16_t task_id1;
volatile uint16_t context_id;
volatile uint16_t thread_id;
volatile uint8_t reserved[2];
#if (defined(DAVINCI_CLOUD_V2) || defined(DAVINCI_CLOUD_V2_FFTS))
volatile uint32_t pid;
#endif
} ts_to_aicpu_ffts_plus_datadump_t;
typedef struct tag_ts_datadumploadinfo {
volatile uint64_t dumpinfo_ptr;
volatile uint32_t length;
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint16_t kernel_type;
volatile uint16_t reserved;
} ts_datadumploadinfo_t;
typedef struct tag_ts_to_aicpu_datadumploadinfo {
volatile uint64_t dumpinfoPtr;
volatile uint32_t length;
volatile uint16_t stream_id;
volatile uint16_t task_id;
} ts_to_aicpu_datadumploadinfo_t;
typedef struct tag_ts_to_aicpu_loadinfo {
volatile uint64_t aicpuInfoPtr;
volatile uint32_t length;
volatile uint16_t stream_id;
volatile uint16_t task_id;
} ts_to_aicpu_loadinfo_t;
typedef struct tag_ts_aicpu_dump_response {
volatile uint16_t task_id;
volatile uint16_t result_code;
volatile uint16_t stream_id;
volatile uint8_t cmd_type;
volatile uint8_t reserved;
} ts_aicpu_dump_response_t;
typedef struct tag_ts_aicpu_response {
volatile uint16_t task_id;
volatile uint16_t result_code;
volatile uint16_t stream_id;
volatile uint8_t cmd_type;
volatile uint8_t reserved;
} ts_aicpu_response_t;
typedef struct tag_ts_aicpu_task_active_for_wait {
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint32_t result_code;
} ts_aicpu_task_active_for_wait_t;
typedef struct tag_ts_aicpu_timeout_config_response {
uint32_t result;
} ts_aicpu_timeout_config_response_t;
typedef struct tag_ts_callback_record {
volatile uint16_t stream_id;
volatile uint16_t record_id;
volatile uint16_t task_id;
volatile uint16_t reserved;
} ts_callback_record_t;
typedef struct tag_ts_aicpu_err_msg_report {
volatile uint32_t result_code;
volatile uint16_t stream_id;
volatile uint16_t task_id;
volatile uint16_t offset;
volatile uint8_t reserved[2];
} ts_aicpu_err_msg_report_t;
typedef struct tag_ts_to_aicpu_timeout_config {
volatile uint32_t op_wait_timeout_en : 1;
volatile uint32_t op_execute_timeout_en : 1;
volatile uint32_t rsv : 30;
volatile uint32_t op_wait_timeout;
volatile uint32_t op_execute_timeout;
} ts_to_aicpu_timeout_config_t;
typedef struct tag_ts_aicpu_sqe {
volatile uint32_t pid;
volatile uint8_t cmd_type;
volatile uint8_t vf_id;
volatile uint8_t tid;
volatile uint8_t ts_id;
union {
ts_aicpu_model_operate_t aicpu_model_operate;
ts_aicpu_model_operate_response_t aicpu_model_operate_resp;
ts_to_aicpu_task_report_t ts_to_aicpu_task_report;
ts_aicpu_active_stream_t aicpu_active_stream;
ts_aicpu_notify_t aicpu_notify;
ts_aicpu_record_t aicpu_record;
ts_to_aicpu_datadump_t ts_to_aicpu_datadump;
ts_to_aicpu_datadumploadinfo_t ts_to_aicpu_datadumploadinfo;
ts_aicpu_dump_response_t aicpu_dump_resp;
ts_aicpu_task_active_for_wait_t task_active_for_wait;
ts_to_aicpu_timeout_config_t ts_to_aicpu_timeout_cfg;
ts_aicpu_timeout_config_response_t aicpu_timeout_cfg_resp;
ts_callback_record_t callback_record;
ts_aicpu_err_msg_report_t aicpu_err_msg_report;
ts_to_aicpu_ffts_plus_datadump_t ts_to_aicpu_ffts_plus_datadump;
ts_to_aicpu_loadinfo_t ts_to_aicpu_info;
ts_aicpu_response_t aicpu_resp;
ts_to_aicpu_aic_err_report_t ts_to_aicpu_aic_err_report;
ts_aicpu_msg_version_t aicpu_msg_version;
} u;
} ts_aicpu_sqe_t;
enum tag_ts_to_aicpu_msg_cmd_type {
TS_AICPU_MSG_VERSION = 0,
TS_AICPU_MODEL_OPERATE = 1,
TS_AICPU_TASK_REPORT = 2,
TS_AICPU_ACTIVE_STREAM = 3,
TS_AICPU_RECORD = 4,
TS_AICPU_NORMAL_DATADUMP_REPORT = 5,
TS_AICPU_DEBUG_DATADUMP_REPORT = 6,
TS_AICPU_DATADUMP_INFO_LOAD = 7,
TS_AICPU_TIMEOUT_CONFIG = 8,
TS_AICPU_INFO_LOAD = 9,
TS_AIC_ERROR_REPORT = 10,
TS_INVALID_AICPU_CMD
};
typedef struct tag_ts_aicpu_model_operate_msg {
uint64_t arg_ptr;
uint16_t stream_id;
uint16_t model_id;
uint8_t cmd_type;
uint8_t reserved[3];
} ts_aicpu_model_operate_msg_t;
typedef struct tag_ts_to_aicpu_task_report_msg {
uint16_t model_id;
uint16_t stream_id;
uint32_t task_id;
uint16_t result_code;
uint16_t reserve;
} ts_to_aicpu_task_report_msg_t;
typedef struct tag_ts_aicpu_record_msg {
uint32_t record_id;
uint8_t record_type;
uint8_t reserved;
uint16_t ret_code;
uint32_t fault_task_id;
} ts_aicpu_record_msg_t;
typedef struct tag_ts_to_aicpu_normal_datadump_msg {
uint32_t dump_task_id;
uint16_t dump_stream_id;
uint8_t is_model : 1;
uint8_t rsv : 7;
uint8_t dump_type;
} ts_to_aicpu_normal_datadump_msg_t;
typedef struct tag_ts_to_aicpu_debug_datadump_msg {
uint32_t dump_task_id;
uint32_t debug_dump_task_id;
uint16_t dump_stream_id;
uint8_t is_model : 1;
uint8_t rsv : 7;
uint8_t dump_type;
} ts_to_aicpu_debug_datadump_msg_t;
typedef struct ts_to_aicpu_datadump_info_load_msg {
uint64_t dumpinfoPtr;
uint32_t length;
uint32_t task_id;
uint16_t stream_id;
uint16_t reserve;
} ts_to_aicpu_datadump_info_load_msg_t;
typedef struct tag_ts_to_aicpu_info_load_msg {
uint64_t aicpu_info_ptr;
uint32_t length;
uint32_t task_id;
uint16_t stream_id;
uint16_t reserve;
} ts_to_aicpu_info_load_msg_t;
typedef struct tag_ts_aicpu_response_msg {
uint32_t task_id;
uint16_t stream_id;
uint16_t result_code;
uint8_t reserved;
uint8_t rsv[3];
} ts_aicpu_response_msg_t;
typedef struct tag_ts_to_aicpu_aic_err_msg {
uint16_t result_code;
uint16_t aic_bitmap_num;
uint16_t aiv_bitmap_num;
uint8_t bitmap[26];
} ts_to_aicpu_aic_err_msg_t;
typedef struct tag_ts_aicpu_msg_info {
uint32_t pid;
uint8_t cmd_type;
uint8_t vf_id;
uint8_t tid;
uint8_t ts_id;
union {
ts_aicpu_msg_version_t aicpu_msg_version;
ts_aicpu_model_operate_msg_t aicpu_model_operate;
ts_to_aicpu_task_report_msg_t ts_to_aicpu_task_report;
ts_aicpu_active_stream_t aicpu_active_stream;
ts_aicpu_record_msg_t aicpu_record;
ts_to_aicpu_normal_datadump_msg_t ts_to_aicpu_normal_datadump;
ts_to_aicpu_debug_datadump_msg_t ts_to_aicpu_debug_datadump;
ts_to_aicpu_datadump_info_load_msg_t ts_to_aicpu_datadump_info_load;
ts_to_aicpu_timeout_config_t ts_to_aicpu_timeout_cfg;
ts_to_aicpu_info_load_msg_t ts_to_aicpu_info_load;
ts_aicpu_response_msg_t aicpu_resp;
ts_to_aicpu_aic_err_msg_t aic_err_msg;
} u;
} ts_aicpu_msg_info_t;
#ifdef __cplusplus
}
#endif
#endif