#ifndef __DMS_CMD_DEF_H__
#define __DMS_CMD_DEF_H__
#include "pbl/pbl_urd_main_cmd_def.h"
#include "pbl/pbl_urd_sub_cmd_def.h"
#define MAKE_UP_COMMAND(fun, cmd) (((fun) << 16) | (cmd))
#define MAKE_UP_INDEPENDENCE_COMMAND(main, sub) (((main) << 12) | (sub))
#define DMS_MAKE_UP_FILTER_HAL_DEV_INFO_EX(f, module, info) do { \
(f)->filter_len = (unsigned int)sprintf_s((f)->filter, sizeof((f)->filter), "module=0x%x,info=0x%x",\
(unsigned int)(module), (unsigned int)(info)); \
} while (0)
#define DAVINCI_INTF_MODULE_DMS "DMS"
#define DMS_MAGIC 'V'
#define DMS_IOCTL_CMD _IO(DMS_MAGIC, 1)
#define DMS_GET_FAULT_EVENT _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_FAULT_EVENT)
#define DMS_GET_EVENT_CODE _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_EVENT_CODE)
#define DMS_GET_AI_INFO_FROM_TS _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_AI_INFO_FROM_TS)
#define DMS_GET_HISTORY_FAULT_EVENT _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_HISTORY_FAULT_EVENT)
#define DMS_GET_OSC_FREQ_INFO_HOST _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_HOST_OSC_FREQ)
#define DMS_GET_OSC_FREQ_INFO_DEVICE _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_DEV_OSC_FREQ)
#define DMS_GET_FAULT_INJECT_INFO _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_FAULT_INJECT_INFO)
#define DMS_GET_CHIP_INFO _IO(DMS_MAIN_CMD_BASIC, DMS_SUBCMD_GET_CHIP_INFO)
#define DMS_GET_CPU_INFO _IO(DMS_MAIN_CMD_SOC, DMS_SUBCMD_GET_CPU_INFO)
#define DMS_GET_CPU_UTILIZATION _IO(DMS_MAIN_CMD_SOC, DMS_SUBCMD_GET_CPU_UTILIZATION)
#define DMS_SENSOR_NODE_REGISTER _IO(DMS_MAIN_CMD_SOFT_FAULT, DMS_SUBCMD_SENSOR_NODE_REGISTER)
#define DMS_SENSOR_NODE_UNREGISTER _IO(DMS_MAIN_CMD_SOFT_FAULT, DMS_SUBCMD_SENSOR_NODE_UNREGISTER)
#define DMS_SENSOR_NODE_UPDATE_VAL _IO(DMS_MAIN_CMD_SOFT_FAULT, DMS_SUBCMD_SENSOR_NODE_UPDATE_VAL)
#define FILTER_MAX_LEN 128
struct dms_ioctl_arg {
unsigned int msg_source;
unsigned int main_cmd;
unsigned int sub_cmd;
const char *filter;
unsigned int filter_len;
void *input;
unsigned int input_len;
void *output;
unsigned int output_len;
};
#define DMS_MAX_EVENT_NAME_LENGTH 256
#define DMS_MAX_EVENT_DATA_LENGTH 32
#define DMS_MAX_EVENT_ARRAY_LENGTH 128
#define DMS_MAX_EVENT_INFO_NUM 4
struct dms_event_para {
unsigned int event_code;
int pid;
unsigned int event_id;
unsigned short deviceid;
unsigned short node_type;
unsigned char node_id;
unsigned short sub_node_type;
unsigned char sub_node_id;
unsigned char severity;
unsigned char assertion;
unsigned short sensor_num;
int event_serial_num;
int notify_serial_num;
unsigned long long alarm_raised_time;
char event_name[DMS_MAX_EVENT_NAME_LENGTH];
char additional_info[DMS_MAX_EVENT_DATA_LENGTH];
unsigned char event_info[DMS_MAX_EVENT_INFO_NUM];
};
struct devdrv_event_obj_para {
unsigned int event_count;
struct dms_event_para dms_event[DMS_MAX_EVENT_ARRAY_LENGTH];
};
enum cmd_source {
FROM_DSMI = 0,
FROM_HAL = 1,
FROM_KERNEL = 2
};
struct dms_read_event_ioctl {
enum cmd_source cmd_src;
int timeout;
};
struct dms_event_ioctrl {
unsigned int devid;
unsigned int event_code;
};
struct dms_power_state_st {
unsigned int dev_id;
int state;
};
struct dms_get_gpio {
unsigned int dev_id;
unsigned int gpio_num;
};
struct dms_set_device_info_in {
unsigned int dev_id;
unsigned int sub_cmd;
const void *buff;
unsigned int buff_size;
};
struct dms_set_device_info_in_multi_packet {
unsigned int dev_id;
unsigned int sub_cmd;
unsigned char buff[300];
unsigned int buff_size;
unsigned int current_packet;
unsigned int total_size;
};
struct dms_get_device_info_in {
unsigned int dev_id;
unsigned int sub_cmd;
void *buff;
unsigned int buff_size;
};
struct dms_hal_device_info_stru {
unsigned int dev_id;
int module_type;
int info_type;
unsigned int buff_size;
unsigned char payload[300];
};
#define DMS_HAL_DEV_INFO_HEAD_LEN (uint32_t)((size_t)&((struct dms_hal_device_info_stru *)0)->payload)
struct dms_get_device_info_out {
unsigned int out_size;
};
#define DMS_FILTER_LENGTH 256
struct dms_filter_st {
char filter[DMS_FILTER_LENGTH];
unsigned int filter_len;
};
struct dms_get_vdevice_info_in {
unsigned int dev_id;
unsigned int vfid;
};
struct dms_get_vdevice_info_out {
unsigned int total_core;
unsigned int core_num;
unsigned long mem_size;
unsigned char resv[64];
};
struct dms_get_ddr_info_in {
unsigned int dev_id;
unsigned int vfid;
unsigned int resv[2];
};
struct dms_get_ddr_info_out {
unsigned long total;
unsigned long free;
unsigned long resv[8];
};
struct dms_get_dev_topology_in {
unsigned int dev_id1;
unsigned int dev_id2;
};
struct dms_set_bist_info_in {
unsigned int dev_id;
unsigned int buff_size;
unsigned char *buff;
};
struct dms_get_bist_info_in {
unsigned int dev_id;
unsigned int sub_cmd;
unsigned int size;
unsigned char *buff;
};
struct dms_set_bist_info_multi_cmd_in {
unsigned int dev_id;
unsigned int sub_cmd;
unsigned int buff_size;
unsigned char *buff;
};
struct dms_get_bist_info_out {
unsigned int size;
};
struct dms_flash_content_in {
int dev_id;
unsigned int type;
unsigned char *buf;
unsigned int size;
unsigned int offset;
};
struct dms_ctrl_device_node_in {
unsigned int dev_id;
int node_type;
int node_id;
unsigned int sub_cmd;
void *in_buf;
unsigned int in_size;
};
struct dms_get_all_device_node_in {
unsigned int dev_id;
unsigned int capability;
struct dsmi_dtm_node_s *node_info;
unsigned int size;
};
struct dms_get_all_device_node_out {
unsigned int out_size;
};
struct dms_fault_inject_in {
unsigned int dev_id;
unsigned int vfid;
unsigned int buff_size;
const void *buff;
};
struct dms_sriov_switch_in {
unsigned int dev_id;
int sriov_switch;
};
struct dms_get_cpu_utilization_in {
unsigned int index;
unsigned int num;
};
struct dms_mem_info_in {
unsigned int dev_id;
unsigned int vfid;
unsigned int resv[2];
};
struct dms_mem_info_out {
unsigned long long total_size;
unsigned long long use_size;
unsigned long long free_size;
unsigned long long hpage_2M_num;
unsigned long long hpage_1G_num;
unsigned int mem_util;
unsigned long long resv[8];
};
struct dms_cgroup_mem_info_out {
unsigned long long limit_in_bytes;
unsigned long long max_usage_in_bytes;
unsigned long long usage_in_bytes;
unsigned long long resv[8];
};
struct dms_pass_through_mcu_in {
unsigned int dev_id;
unsigned int rw_flag;
unsigned int buf_len;
unsigned char *buf;
};
#define MCU_RESP_LEN 28
struct dms_pass_through_mcu_out {
unsigned int dev_id;
unsigned int response_len;
unsigned char response_data[MCU_RESP_LEN];
};
#define DMS_FILTER_TS_INFO "main_cmd=0xb"
struct dms_ts_fault_mask {
unsigned int type;
unsigned int mask_switch;
};
#define DSMI_SIO_SLLC_INDEX_BIT (0xFF000000U)
#define DSMI_SIO_SUB_CMD_BIT (0x00FFFFFFU)
struct dms_sio_crc_err_info {
unsigned char sllc_index;
unsigned short tx_error_count;
unsigned short rx_error_count;
unsigned long long rx_ecc_count;
unsigned long long resv[8];
};
struct dms_device_state_out {
unsigned long buf_size;
unsigned char buf[];
};
struct dms_update_ts_patch {
unsigned int devid;
unsigned int update_type;
};
typedef struct dms_sils_info_out {
unsigned int size;
} dms_sils_info_out_t;
#define SILS_RESERVE_LEN 8
typedef struct dms_sils_info_in {
unsigned int dev_id;
unsigned int size;
unsigned int resv[SILS_RESERVE_LEN];
void *buff;
} dms_sils_info_in_t;
#define DMS_EID_INFO_LEN 16
#define DMS_MAX_EID_PAIR_NUM 8
#define DMS_MAX_DEVICE_REPLACE_TIMEOUT_SEC 120
union dms_urma_addr_info {
unsigned char eid[DMS_EID_INFO_LEN];
struct {
unsigned long long reserved;
unsigned int prefix;
unsigned int addr;
} in4;
struct {
unsigned long long subnet_prefix;
unsigned long long interface_id;
} in6;
};
enum dms_urma_eid_type {
DMS_URMA_EID_TYPE = 0U,
DMS_URMA_TYPE_MAX = 1U,
};
struct dms_eid_pair_info {
union dms_urma_addr_info eid_local;
union dms_urma_addr_info eid_remote;
unsigned int default_eid_flag : 1;
unsigned int resv : 31;
};
struct dms_device_attr {
int phy_dev_id;
unsigned int eid_num;
struct dms_eid_pair_info eid_pair[DMS_MAX_EID_PAIR_NUM];
enum dms_urma_eid_type type;
unsigned int reserve;
};
struct dms_device_replace_stru {
struct dms_device_attr src_dev_attr;
struct dms_device_attr dst_dev_attr;
unsigned int timeout;
unsigned long long flag;
};
struct dms_eid_info {
unsigned int dev_id;
struct dms_eid_pair_info eid;
};
struct dms_eid_query_info {
union dms_urma_addr_info local_eid[DMS_MAX_EID_PAIR_NUM];
unsigned int num;
unsigned int min_idx;
};
struct dms_get_phy_dev_info_out {
unsigned int chip_id;
unsigned int die_id;
unsigned int reserved[32];
};
#endif