/* * Copyright: Copyright (c) Huawei Technologies Co., Ltd. 2021-2022. All rights reserved. * Description: DCMI API Reference */ #ifndef __DCMI_INTERFACE_API_H__ #define __DCMI_INTERFACE_API_H__ #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ #ifdef __linux #define DCMIDLLEXPORT #else #define DCMIDLLEXPORT _declspec(dllexport) #endif #define DCMI_VDEV_RES_NAME_LEN 16 #define DCMI_VDEV_FOR_RESERVE 32 #define DCMI_VDEV_MAX_NUM 32 struct dcmi_create_vdev_out { unsigned int vdev_id; unsigned int pcie_bus; unsigned int pcie_device; unsigned int pcie_func; unsigned int vfg_id; unsigned char reserved[DCMI_VDEV_FOR_RESERVE]; }; enum dcmi_main_cmd { DCMI_MAIN_CMD_DVPP = 0, DCMI_MAIN_CMD_ISP, DCMI_MAIN_CMD_TS_GROUP_NUM, DCMI_MAIN_CMD_CAN, DCMI_MAIN_CMD_UART, DCMI_MAIN_CMD_UPGRADE, DCMI_MAIN_CMD_TEMP = 50, DCMI_MAIN_CMD_SVM = 51, DCMI_MAIN_CMD_VDEV_MNG, DCMI_MAIN_CMD_DEVICE_SHARE = 0x8001, DCMI_MAIN_CMD_EX_CERT = 0x8003, DCMI_MAIN_CMD_MAX }; /* DSMI sub vdev mng CMD def */ typedef enum { DCMI_VMNG_SUB_CMD_GET_VDEV_RESOURCE, DCMI_VMNG_SUB_CMD_GET_TOTAL_RESOURCE, DCMI_VMNG_SUB_CMD_GET_FREE_RESOURCE, DCMI_VMNG_SUB_CMD_MAX, } DCMI_VDEV_MNG_SUB_CMD; struct dcmi_base_resource { unsigned long long token; unsigned long long token_max; unsigned long long task_timeout; unsigned int vfg_id; unsigned char vip_mode; unsigned char reserved[DCMI_VDEV_FOR_RESERVE - 1]; /* bytes aligned */ }; /* total types of computing resource */ struct dcmi_computing_resource { /* accelator resource */ float aic; float aiv; unsigned short dsa; unsigned short rtsq; unsigned short acsq; unsigned short cdqm; unsigned short c_core; unsigned short ffts; unsigned short sdma; unsigned short pcie_dma; /* memory resource, MB as unit */ unsigned long long memory_size; /* id resource */ unsigned int event_id; unsigned int notify_id; unsigned int stream_id; unsigned int model_id; /* cpu resource */ unsigned short topic_schedule_aicpu; unsigned short host_ctrl_cpu; unsigned short host_aicpu; unsigned short device_aicpu; unsigned short topic_ctrl_cpu_slot; unsigned char reserved[DCMI_VDEV_FOR_RESERVE]; }; struct dcmi_media_resource { /* dvpp resource */ float jpegd; float jpege; float vpc; float vdec; float pngd; float venc; unsigned char reserved[DCMI_VDEV_FOR_RESERVE]; }; struct dcmi_vdev_query_info { char name[DCMI_VDEV_RES_NAME_LEN]; unsigned int status; unsigned int is_container_used; unsigned int vfid; unsigned int vfg_id; unsigned long long container_id; struct dcmi_base_resource base; struct dcmi_computing_resource computing; struct dcmi_media_resource media; }; /* for single search */ // vdev struct dcmi_vdev_query_stru { unsigned int vdev_id; struct dcmi_vdev_query_info query_info; }; // free struct dcmi_soc_free_resource { unsigned int vfg_num; unsigned int vfg_bitmap; struct dcmi_base_resource base; struct dcmi_computing_resource computing; struct dcmi_media_resource media; }; // total struct dcmi_soc_total_resource { unsigned int vdev_num; unsigned int vdev_id[DCMI_VDEV_MAX_NUM]; unsigned int vfg_num; unsigned int vfg_bitmap; struct dcmi_base_resource base; struct dcmi_computing_resource computing; struct dcmi_media_resource media; }; enum dcmi_unit_type { NPU_TYPE = 0, MCU_TYPE = 1, CPU_TYPE = 2, INVALID_TYPE = 0xFF }; DCMIDLLEXPORT int dcmi_init(void); DCMIDLLEXPORT int dcmi_get_card_num_list(int *card_num, int *card_list, int list_len); DCMIDLLEXPORT int dcmi_get_device_num_in_card(int card_id, int *device_num); DCMIDLLEXPORT int dcmi_create_vdevice(int card_id, int device_id, int vdev_id, const char *template_name, struct dcmi_create_vdev_out *out); DCMIDLLEXPORT int dcmi_set_destroy_vdevice(int card_id, int device_id, unsigned int vdevid); DCMIDLLEXPORT int dcmi_get_device_logic_id(int *device_logic_id, int card_id, int device_id); DCMIDLLEXPORT int dcmi_get_device_type(int card_id, int device_id, enum dcmi_unit_type *device_type); #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* __DCMI_INTERFACE_API_H__ */