6. Definition of Relevant Data Structure
6.1. bm_status_t
typedef enum {
BM_SUCCESS = 0,
BM_ERR_DEVNOTREADY = 1, /* Device not ready yet */
BM_ERR_FAILURE = 2, /* General failure */
BM_ERR_TIMEOUT = 3, /* Timeout */
BM_ERR_PARAM = 4, /* Parameters invalid */
BM_ERR_NOMEM = 5, /* Not enough memory */
BM_ERR_DATA = 6, /* Data error */
BM_ERR_BUSY = 7, /* Busy */
BM_ERR_NOFEATURE = 8, /* Not supported yet */
BM_NOT_SUPPORTED = 9
} bm_status_t;
6.2. bm_mem_type_t
typedef enum {
BM_MEM_TYPE_DEVICE = 0,
BM_MEM_TYPE_HOST = 1,
BM_MEM_TYPE_SYSTEM = 2,
BM_MEM_TYPE_INT8_DEVICE = 3,
BM_MEM_TYPE_INVALID = 4
} bm_mem_type_t;
6.3. bm_mem_flags_t
typedef union {
struct {
bm_mem_type_t mem_type : 3;
unsigned int reserved : 29;
} u;
unsigned int rawflags;
} bm_mem_flags_t;
6.4. bm_mem_desc_t
typedef struct bm_mem_desc {
union {
struct {
unsigned long device_addr;
unsigned int reserved;
int dmabuf_fd;
} device;
struct {
void *system_addr;
unsigned int reserved0;
int reserved1;
} system;
} u;
bm_mem_flags_t flags;
unsigned int size;
} bm_mem_desc_t;
6.5. bm_misc_info
struct bm_misc_info {
int pcie_soc_mode; /0—pcie; 1—soc/
int ddr_ecc_enable; /0—disable; 1—enable/
unsigned int chipid;
#define BM1682_CHIPID_BIT_MASK (0X1 << 0)
#define BM1684_CHIPID_BIT_MASK (0X1 << 1)
unsigned long chipid_bit_mask;
unsigned int driver_version;
int domain_bdf;
};
6.6. bm_profile_t
typedef struct bm_profile {
unsigned long cdma_in_time;
unsigned long cdma_in_counter;
unsigned long cdma_out_time;
unsigned long cdma_out_counter;
unsigned long tpu_process_time;
unsigned long sent_api_counter;
unsigned long completed_api_counter;
} bm_profile_t;
6.7. bm_heap_stat
struct bm_heap_stat {
unsigned int mem_total;
unsigned int mem_avail;
unsigned int mem_used;
}
6.8. bm_dev_stat_t
typedef struct bm_dev_stat {
int mem_total;
int mem_used;
int tpu_util;
int heap_num;
struct bm_heap_stat heap_stat[4];
} bm_dev_stat_t;
6.9. bm_log_level
#define BMLIB_LOG_QUIET -8
#define BMLIB_LOG_PANIC 0
#define BMLIB_LOG_FATAL 8
#define BMLIB_LOG_ERROR 16
#define BMLIB_LOG_WARNING 24
#define BMLIB_LOG_INFO 32
#define BMLIB_LOG_VERBOSE 40
#define BMLIB_LOG_DEBUG 48
#define BMLIB_LOG_TRACE 56