#ifndef _HPI_H
#define _HPI_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <hxge_common_impl.h>
#include <hxge_common.h>
typedef uint32_t hpi_status_t;
#define VMAC_BLK_ID 0x1
#define TXDMA_BLK_ID 0x2
#define RXDMA_BLK_ID 0x3
#define PFC_BLK_ID 0x4
#define VIR_BLK_ID 0x5
#define PEU_BLK_ID 0x6
#define RESET_FAILED 0x81
#define WRITE_FAILED 0x82
#define READ_FAILED 0x83
#define PORT_INVALID 0x41
#define CHANNEL_INVALID 0x42
#define OPCODE_INVALID 0x43
#define REGISTER_INVALID 0x44
#define COUNTER_INVALID 0x45
#define CONFIG_INVALID 0x46
#define LOGICAL_PAGE_INVALID 0x47
#define VLAN_INVALID 0x48
#define RDC_TAB_INVALID 0x49
#define LOCATION_INVALID 0x4a
#define HPI_SUCCESS 0
#define HPI_FAILURE 0x80000000
#define HPI_BLOCK_ID_SHIFT 8
#define HPI_PORT_CHAN_SHIFT 12
#define HPI_BK_ERROR_START 0x50
#define HPI_BK_HW_ER_START 0x90
typedef struct _rt_buf {
uint32_t ctl_addr;
uint32_t val_l32;
uint32_t val_h32;
} rt_buf_t;
#define MAX_RTRACE_ENTRIES 1024
#define MAX_RTRACE_IOC_ENTRIES 64
#define TRACE_ADDR_MASK 0x00FFFFFF
#define TRACE_FUNC_MASK 0x03000000
#define TRACE_INST_MASK 0x3C000000
#define TRACE_CTL_WR 0x40000000
#define TRACE_CTL_INVALID 0x80000000
#define TRACE_FUNC_SHIFT 24
#define TRACE_INST_SHIFT 26
#define MSG_BUF_SIZE 1024
typedef struct _rtrace {
uint16_t next_idx;
uint16_t last_idx;
boolean_t wrapped;
rt_buf_t buf[MAX_RTRACE_ENTRIES];
} rtrace_t;
typedef enum config_op {
DISABLE = 0,
ENABLE,
INIT
} config_op_t;
typedef enum io_op {
OP_SET = 0,
OP_GET,
OP_UPDATE,
OP_CLEAR
} io_op_t;
typedef struct _hpi_handle_function {
uint16_t instance;
uint16_t function;
} hpi_handle_function_t;
typedef struct _hpi_handle {
hpi_reg_handle_t regh;
hpi_reg_ptr_t regp;
boolean_t is_vraddr;
hpi_handle_function_t function;
void *hxgep;
} hpi_handle_t;
extern rtrace_t hpi_rtracebuf;
void hpi_rtrace_update(hpi_handle_t handle, boolean_t wr, rtrace_t *rt,
uint32_t addr, uint64_t val);
void hpi_rtrace_buf_init(rtrace_t *rt);
void hpi_debug_msg(hpi_handle_function_t function, uint64_t level,
char *fmt, ...);
#ifdef HPI_DEBUG
#define HPI_DEBUG_MSG(params) hpi_debug_msg params
#else
#define HPI_DEBUG_MSG(params)
#endif
#define HPI_ERROR_MSG(params) hpi_debug_msg params
#ifdef __cplusplus
}
#endif
#endif