* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef DMS_MISC_INTERFACE_H
#define DMS_MISC_INTERFACE_H
#include "ascend_hal.h"
#include "dms_soc_interface.h"
#include "dms_memory_interface.h"
#include "dms_lpm_interface.h"
#include "dsmi_common_interface.h"
#define DMS_FAULT_INJECT_RESERVED_LEN 32
typedef struct dms_fault_inject_stru {
int node_type;
int node_id;
int sub_node_type;
int sub_node_id;
int fault_type;
int sub_fault_type;
int times;
unsigned char reserved[DMS_FAULT_INJECT_RESERVED_LEN];
} DMS_FAULT_INJECT_STRU;
struct dms_osc_freq {
unsigned int dev_id;
unsigned int sub_cmd;
unsigned long long value;
};
struct dms_dev_replace_stru {
struct dsmi_device_attr src_dev_attr;
struct dsmi_device_attr dst_dev_attr;
unsigned int timeout;
unsigned long long flag;
};
struct dms_eid_info_stru {
unsigned int dev_id;
struct dsmi_eid_pair_info eid;
};
#define DMS_MAX_EID_PAIR_NUM 8
struct dms_ub_dev_info {
unsigned int eid_index[DMS_MAX_EID_PAIR_NUM];
void *urma_dev[DMS_MAX_EID_PAIR_NUM];
};
int DmsGetTsInfo(unsigned int dev_id, unsigned int vfid, unsigned int core_id, void *result, unsigned int result_size);
int dms_get_average_util_from_ts(unsigned int dev_id, unsigned int vfid, unsigned int sub_cmd, unsigned int *value);
int dms_get_single_util_from_ts(unsigned int dev_id, unsigned int vfid, unsigned int sub_cmd, void *out_buf,
unsigned int *size);
int dms_get_ts_info(unsigned int dev_id, unsigned int vfid, unsigned int sub_cmd, void *out_buf, unsigned int *size);
int dms_set_ts_info(unsigned int dev_id, unsigned int sub_cmd, void *buf, unsigned int size);
drvError_t dms_get_device_topology(unsigned int dev_id1, unsigned int dev_id2, int *topology_type);
drvError_t dms_get_phy_devices_topology(unsigned int dev_id1, unsigned int dev_id2, int *topology_type);
int dms_get_dvpp_info(unsigned int dev_id, unsigned int vfid, unsigned int subcmd, void *buf, unsigned int *size);
drvError_t dms_set_sriov_switch(unsigned int dev_id, unsigned int sub_cmd, const void *buf, unsigned int buf_size);
int DmsGetHccsInfo(unsigned int dev_id, unsigned int vfid, unsigned int sub_cmd, void *buf, unsigned int *size);
int DmsGetSioInfo(unsigned int dev_id, unsigned int vfid, unsigned int sub_cmd, void *buf, unsigned int *size);
int dms_get_last_boot_state(unsigned int dev_id, BOOT_TYPE boot_type, unsigned int *state);
int dms_fault_inject(unsigned int dev_id, unsigned int vfid, unsigned int main_cmd,
unsigned int sub_cmd, DMS_FAULT_INJECT_STRU *para);
drvError_t DmsSetHostAicpuInfo(unsigned int dev_id, unsigned int sub_cmd, const void *buf, unsigned int size);
drvError_t DmsGetHostAicpuInfo(unsigned int dev_id, unsigned int main_cmd,
unsigned int sub_cmd, void *buf, unsigned int *size);
#define DMS_URMA_NAME_MAX_LEN 64
int dms_get_urma_name_by_devid(unsigned int dev_id, char *name, unsigned int len);
drvError_t DmsGetAllDeviceList(int device_ids[], int count);
drvError_t __attribute__((weak))dms_get_spod_info(unsigned int dev_id, unsigned int main_cmd, unsigned int sub_cmd,
void *buf, unsigned int *size)
{
(void)dev_id;
(void)main_cmd;
(void)sub_cmd;
(void)buf;
(void)size;
return DRV_ERROR_NOT_SUPPORT;
}
drvError_t __attribute__((weak))dms_get_spod_item(uint32_t devId, int32_t infoType, int64_t *value)
{
(void)devId;
(void)infoType;
(void)value;
return DRV_ERROR_NOT_SUPPORT;
}
drvError_t __attribute__((weak))dms_parse_sdid(uint32_t sdid, struct halSDIDParseInfo *sdid_parse)
{
(void)sdid;
(void)sdid_parse;
return DRV_ERROR_NOT_SUPPORT;
}
drvError_t __attribute__((weak))dms_get_spod_ping_info(unsigned int dev_id, unsigned int main_cmd, unsigned int sub_cmd,
void *buf, unsigned int *size)
{
(void)dev_id;
(void)main_cmd;
(void)sub_cmd;
(void)buf;
(void)size;
return DRV_ERROR_NOT_SUPPORT;
}
int dms_get_aicpu_utilization(unsigned int dev_id, unsigned int *utilization);
drvError_t DmsDeviceInitStatus(unsigned int dev_id, unsigned int *status);
drvError_t DmsTsHeartbeatStatus(unsigned int dev_id, unsigned int vf_id, unsigned int ts_id, unsigned int *status);
drvError_t dms_set_cc_info(unsigned int device_id, void *buf, unsigned int buf_size);
drvError_t dms_get_cc_info(unsigned int device_id, void *buf, unsigned int *buf_size);
drvError_t dms_get_connect_type(int64_t *type);
drvError_t __attribute__((weak))dms_get_spod_node_status(unsigned int dev_id, unsigned int main_cmd, unsigned int sub_cmd,
void *buf, unsigned int *size)
{
(void)dev_id;
(void)main_cmd;
(void)sub_cmd;
(void)buf;
(void)size;
return DRV_ERROR_NOT_SUPPORT;
}
drvError_t __attribute__((weak))dms_set_spod_node_status(unsigned int dev_id, unsigned int sub_cmd,
const void *buf, unsigned int size)
{
(void)dev_id;
(void)sub_cmd;
(void)buf;
(void)size;
return DRV_ERROR_NOT_SUPPORT;
}
drvError_t dms_get_ub_dev_info(unsigned int dev_id, struct dms_ub_dev_info *eid_info, int *num);
enum devdrv_token_val_type {
SHARED_TOKEN_VAL = 0,
UNIQUE_TOKEN_VAL,
TOKEN_VAL_TYPE_MAX
};
drvError_t dms_get_token_val(unsigned int dev_id, unsigned int type, unsigned int *val);
#define D2D_EID_LENGTH 16
struct dms_ub_d2d_eid {
unsigned char d2d_eid[D2D_EID_LENGTH];
};
drvError_t dms_get_ub_d2d_eid(unsigned int dev_id, struct dms_ub_d2d_eid *d2d_eid);
#define BUS_INST_EID_LENGTH 16
struct dms_ub_bus_inst_eid {
unsigned char bus_inst_eid[BUS_INST_EID_LENGTH];
};
drvError_t dms_get_ub_bus_inst_eid(unsigned int dev_id, struct dms_ub_bus_inst_eid *bus_inst_eid);
struct dms_ubdev_id_info {
unsigned short device_id;
unsigned short vendor_id;
unsigned short module_vendor_id;
unsigned short module_id;
};
drvError_t dms_get_ub_dev_id_info(unsigned int dev_id, struct dms_ubdev_id_info *id_info);
#endif