#ifndef _NPI_TXC_H
#define _NPI_TXC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <npi.h>
#include <nxge_txc_hw.h>
#define TXC_ER_ST (TXC_BLK_ID << NPI_BLOCK_ID_SHIFT)
#define TXC_ID_SHIFT(n) (n << NPI_PORT_CHAN_SHIFT)
#define NPI_TXC_PORT_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\
TXC_ER_ST | PORT_INVALID)
#define NPI_TXC_CHANNEL_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\
TXC_ER_ST | CHANNEL_INVALID)
#define NPI_TXC_OPCODE_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\
TXC_ER_ST | OPCODE_INVALID)
#define NXGE_TXC_FZC_OFFSET(x, cn) (x + TXC_FZC_CHANNEL_OFFSET(cn))
#define NXGE_TXC_FZC_CNTL_OFFSET(x, port) (x + \
TXC_FZC_CNTL_PORT_OFFSET(port))
#define TXC_FZC_REG_READ64(handle, reg, cn, val_p) \
NXGE_REG_RD64(handle, \
(NXGE_TXC_FZC_OFFSET(reg, cn)), val_p)
#define TXC_FZC_REG_WRITE64(handle, reg, cn, data) \
NXGE_REG_WR64(handle, \
(NXGE_TXC_FZC_OFFSET(reg, cn)), data)
#define TXC_FZC_CNTL_REG_READ64(handle, reg, port, val_p) \
NXGE_REG_RD64(handle, \
(NXGE_TXC_FZC_CNTL_OFFSET(reg, port)), val_p)
#define TXC_FZC_CNTL_REG_WRITE64(handle, reg, port, data) \
NXGE_REG_WR64(handle, \
(NXGE_TXC_FZC_CNTL_OFFSET(reg, port)), data)
npi_status_t npi_txc_dma_max_burst(npi_handle_t, io_op_t,
uint8_t, uint32_t *);
npi_status_t npi_txc_dma_max_burst_set(npi_handle_t, uint8_t,
uint32_t);
npi_status_t npi_txc_dma_bytes_transmitted(npi_handle_t,
uint8_t, uint32_t *);
npi_status_t npi_txc_control(npi_handle_t, io_op_t,
p_txc_control_t);
npi_status_t npi_txc_global_enable(npi_handle_t);
npi_status_t npi_txc_global_disable(npi_handle_t);
npi_status_t npi_txc_control_clear(npi_handle_t, uint8_t);
npi_status_t npi_txc_training_set(npi_handle_t, uint32_t);
npi_status_t npi_txc_training_get(npi_handle_t, uint32_t *);
npi_status_t npi_txc_port_control_get(npi_handle_t, uint8_t,
uint32_t *);
npi_status_t npi_txc_port_enable(npi_handle_t, uint8_t);
npi_status_t npi_txc_port_disable(npi_handle_t, uint8_t);
npi_status_t npi_txc_dma_max_burst(npi_handle_t, io_op_t,
uint8_t, uint32_t *);
npi_status_t npi_txc_port_dma_enable(npi_handle_t, uint8_t,
uint32_t);
npi_status_t npi_txc_port_dma_list_get(npi_handle_t, uint8_t,
uint32_t *);
npi_status_t npi_txc_port_dma_channel_enable(npi_handle_t, uint8_t,
uint8_t);
npi_status_t npi_txc_port_dma_channel_disable(npi_handle_t, uint8_t,
uint8_t);
npi_status_t npi_txc_pkt_stuffed_get(npi_handle_t, uint8_t,
uint32_t *, uint32_t *);
npi_status_t npi_txc_pkt_xmt_to_mac_get(npi_handle_t, uint8_t,
uint32_t *, uint32_t *);
npi_status_t npi_txc_reorder_get(npi_handle_t, uint8_t,
uint32_t *);
npi_status_t npi_txc_dump_tdc_fzc_regs(npi_handle_t, uint8_t);
npi_status_t npi_txc_dump_fzc_regs(npi_handle_t);
npi_status_t npi_txc_dump_port_fzc_regs(npi_handle_t, uint8_t);
npi_status_t npi_txc_ro_states_get(npi_handle_t, uint8_t,
txc_ro_states_t *);
npi_status_t npi_txc_ro_ecc_state_clr(npi_handle_t, uint8_t);
npi_status_t npi_txc_sf_states_get(npi_handle_t, uint8_t,
txc_sf_states_t *);
npi_status_t npi_txc_sf_ecc_state_clr(npi_handle_t, uint8_t);
void npi_txc_global_istatus_get(npi_handle_t, txc_int_stat_t *);
void npi_txc_global_istatus_clear(npi_handle_t, uint64_t);
void npi_txc_global_imask_set(npi_handle_t, uint8_t,
uint8_t);
#ifdef __cplusplus
}
#endif
#endif