#ifndef _DXE_H_
#define _DXE_H_
#include "wcn36xx.h"
#define WCN36XX_DXE_MEM_REG …
#define WCN36XX_CCU_DXE_INT_SELECT_RIVA …
#define WCN36XX_CCU_DXE_INT_SELECT_PRONTO …
#define WCN36xx_DXE_CTRL_VLD …
#define WCN36xx_DXE_CTRL_EOP …
#define WCN36xx_DXE_CTRL_BDH …
#define WCN36xx_DXE_CTRL_SIQ …
#define WCN36xx_DXE_CTRL_DIQ …
#define WCN36xx_DXE_CTRL_PIQ …
#define WCN36xx_DXE_CTRL_PDU_REL …
#define WCN36xx_DXE_CTRL_STOP …
#define WCN36xx_DXE_CTRL_INT …
#define WCN36xx_DXE_CTRL_SWAP …
#define WCN36xx_DXE_CTRL_ENDIANNESS …
#define WCN36xx_DXE_CTRL_XTYPE_SHIFT …
#define WCN36xx_DXE_CTRL_XTYPE_MASK …
#define WCN36xx_DXE_CTRL_XTYPE_SET(x) …
#define WCN36xx_DXE_CTRL_BTHLD_SEL_SHIFT …
#define WCN36xx_DXE_CTRL_BTHLD_SEL_MASK …
#define WCN36xx_DXE_CTRL_BTHLD_SEL_SET(x) …
#define WCN36xx_DXE_CTRL_PRIO_SHIFT …
#define WCN36xx_DXE_CTRL_PRIO_MASK …
#define WCN36xx_DXE_CTRL_PRIO_SET(x) …
#define WCN36xx_DXE_CTRL_BDT_IDX_SHIFT …
#define WCN36xx_DXE_CTRL_BDT_IDX_MASK …
#define WCN36xx_DXE_CTRL_BDT_IDX_SET(x) …
#define WCN36xx_DXE_XTYPE_H2H …
#define WCN36xx_DXE_XTYPE_H2B …
#define WCN36xx_DXE_XTYPE_B2H …
#define WCN36XX_DXE_CTRL_TX_L …
#define WCN36XX_DXE_CTRL_TX_H …
#define WCN36XX_DXE_CTRL_RX_L …
#define WCN36XX_DXE_CTRL_RX_H …
#define WCN36XX_DXE_CTRL_TX_H_BD …
#define WCN36XX_DXE_CTRL_TX_H_SKB …
#define WCN36XX_DXE_CTRL_TX_L_BD …
#define WCN36XX_DXE_CTRL_TX_L_SKB …
#define WCN36XX_DXE_WQ_TX_L(wcn) …
#define WCN36XX_DXE_WQ_TX_H(wcn) …
#define WCN36XX_DXE_WQ_RX_L …
#define WCN36XX_DXE_WQ_RX_H …
#define WCN36xx_DXE_CH_CTRL_EN …
#define WCN36xx_DXE_CH_CTRL_EOP …
#define WCN36xx_DXE_CH_CTRL_BDH …
#define WCN36xx_DXE_CH_CTRL_SIQ …
#define WCN36xx_DXE_CH_CTRL_DIQ …
#define WCN36xx_DXE_CH_CTRL_PIQ …
#define WCN36xx_DXE_CH_CTRL_PDU_REL …
#define WCN36xx_DXE_CH_CTRL_STOP …
#define WCN36xx_DXE_CH_CTRL_INE_ED …
#define WCN36xx_DXE_CH_CTRL_INE_ERR …
#define WCN36xx_DXE_CH_CTRL_INE_DONE …
#define WCN36xx_DXE_CH_CTRL_EDEN …
#define WCN36xx_DXE_CH_CTRL_EDVEN …
#define WCN36xx_DXE_CH_CTRL_ENDIANNESS …
#define WCN36xx_DXE_CH_CTRL_ABORT …
#define WCN36xx_DXE_CH_CTRL_DFMT …
#define WCN36xx_DXE_CH_CTRL_SWAP …
#define WCN36xx_DXE_CH_CTRL_XTYPE_SHIFT …
#define WCN36xx_DXE_CH_CTRL_XTYPE_MASK …
#define WCN36xx_DXE_CH_CTRL_XTYPE_SET(x) …
#define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SHIFT …
#define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_MASK …
#define WCN36xx_DXE_CH_CTRL_BTHLD_SEL_SET(x) …
#define WCN36xx_DXE_CH_CTRL_PRIO_SHIFT …
#define WCN36xx_DXE_CH_CTRL_PRIO_MASK …
#define WCN36xx_DXE_CH_CTRL_PRIO_SET(x) …
#define WCN36xx_DXE_CH_CTRL_SEL_SHIFT …
#define WCN36xx_DXE_CH_CTRL_SEL_MASK …
#define WCN36xx_DXE_CH_CTRL_SEL_SET(x) …
#define WCN36xx_DXE_CH_CTRL_BDT_IDX_SHIFT …
#define WCN36xx_DXE_CH_CTRL_BDT_IDX_MASK …
#define WCN36xx_DXE_CH_CTRL_BDT_IDX_SET(x) …
#define WCN36XX_DXE_CH_DEFAULT_CTL_RX_L …
#define WCN36XX_DXE_CH_DEFAULT_CTL_RX_H …
#define WCN36XX_DXE_CH_DEFAULT_CTL_TX_H …
#define WCN36XX_DXE_CH_DEFAULT_CTL_TX_L …
#define WCN36XX_DXE_MEM_CSR …
#define WCN36XX_DXE_REG_CSR_RESET …
#define WCN36XX_DXE_ENCH_ADDR …
#define WCN36XX_DXE_REG_CH_EN …
#define WCN36XX_DXE_REG_CH_DONE …
#define WCN36XX_DXE_REG_CH_ERR …
#define WCN36XX_DXE_INT_MASK_REG …
#define WCN36XX_DXE_INT_SRC_RAW_REG …
#define WCN36XX_DXE_INT_CH4_MASK …
#define WCN36XX_DXE_INT_CH3_MASK …
#define WCN36XX_DXE_INT_CH1_MASK …
#define WCN36XX_DXE_INT_CH0_MASK …
#define WCN36XX_DXE_0_INT_CLR …
#define WCN36XX_DXE_0_INT_ED_CLR …
#define WCN36XX_DXE_0_INT_DONE_CLR …
#define WCN36XX_DXE_0_INT_ERR_CLR …
#define WCN36XX_CH_STAT_INT_DONE_MASK …
#define WCN36XX_CH_STAT_INT_ERR_MASK …
#define WCN36XX_CH_STAT_INT_ED_MASK …
#define WCN36XX_DXE_0_CH0_STATUS …
#define WCN36XX_DXE_0_CH1_STATUS …
#define WCN36XX_DXE_0_CH2_STATUS …
#define WCN36XX_DXE_0_CH3_STATUS …
#define WCN36XX_DXE_0_CH4_STATUS …
#define WCN36XX_DXE_REG_RESET …
#define WCN36XX_DXE_BMU_WQ_RX_LOW …
#define WCN36XX_DXE_BMU_WQ_RX_HIGH …
#define WCN36XX_DXE_TX_LOW_OFFSET …
#define WCN36XX_DXE_TX_HIGH_OFFSET …
#define WCN36XX_DXE_RX_LOW_OFFSET …
#define WCN36XX_DXE_RX_HIGH_OFFSET …
#define WCN36XX_DXE_CH_NEXT_DESC_ADDR …
#define WCN36XX_DXE_CH_NEXT_DESC_ADDR_TX_L …
#define WCN36XX_DXE_CH_NEXT_DESC_ADDR_TX_H …
#define WCN36XX_DXE_CH_NEXT_DESC_ADDR_RX_L …
#define WCN36XX_DXE_CH_NEXT_DESC_ADDR_RX_H …
#define WCN36XX_DXE_CH_SRC_ADDR …
#define WCN36XX_DXE_CH_SRC_ADDR_RX_L …
#define WCN36XX_DXE_CH_SRC_ADDR_RX_H …
#define WCN36XX_DXE_CH_DEST_ADDR …
#define WCN36XX_DXE_CH_DEST_ADDR_TX_L …
#define WCN36XX_DXE_CH_DEST_ADDR_TX_H …
#define WCN36XX_DXE_CH_DEST_ADDR_RX_L …
#define WCN36XX_DXE_CH_DEST_ADDR_RX_H …
#define WCN36XX_DXE_CH_STATUS_REG_ADDR …
#define WCN36XX_DXE_CH_STATUS_REG_ADDR_TX_L …
#define WCN36XX_DXE_CH_STATUS_REG_ADDR_TX_H …
#define WCN36XX_DXE_CH_STATUS_REG_ADDR_RX_L …
#define WCN36XX_DXE_CH_STATUS_REG_ADDR_RX_H …
#define WCN36XX_DXE_REG_CTL_RX_L …
#define WCN36XX_DXE_REG_CTL_RX_H …
#define WCN36XX_DXE_REG_CTL_TX_H …
#define WCN36XX_DXE_REG_CTL_TX_L …
#define WCN36XX_SMSM_WLAN_TX_ENABLE …
#define WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY …
#define WCN36XX_INT_MASK_CHAN_TX_L …
#define WCN36XX_INT_MASK_CHAN_RX_L …
#define WCN36XX_INT_MASK_CHAN_RX_H …
#define WCN36XX_INT_MASK_CHAN_TX_H …
#define WCN36XX_BD_CHUNK_SIZE …
#define WCN36XX_PKT_SIZE …
enum wcn36xx_dxe_ch_type { … };
enum wcn36xx_dxe_ch_desc_num { … };
struct wcn36xx_dxe_desc { … } __packed;
struct wcn36xx_dxe_ctl { … };
struct wcn36xx_dxe_ch { … };
struct wcn36xx_dxe_mem_pool { … };
struct wcn36xx_tx_bd;
struct wcn36xx_vif;
int wcn36xx_dxe_allocate_mem_pools(struct wcn36xx *wcn);
void wcn36xx_dxe_free_mem_pools(struct wcn36xx *wcn);
void wcn36xx_dxe_rx_frame(struct wcn36xx *wcn);
int wcn36xx_dxe_alloc_ctl_blks(struct wcn36xx *wcn);
void wcn36xx_dxe_free_ctl_blks(struct wcn36xx *wcn);
int wcn36xx_dxe_init(struct wcn36xx *wcn);
void wcn36xx_dxe_deinit(struct wcn36xx *wcn);
int wcn36xx_dxe_init_channels(struct wcn36xx *wcn);
int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn,
struct wcn36xx_vif *vif_priv,
struct wcn36xx_tx_bd *bd,
struct sk_buff *skb,
bool is_low);
int wcn36xx_dxe_tx_flush(struct wcn36xx *wcn);
void wcn36xx_dxe_tx_ack_ind(struct wcn36xx *wcn, u32 status);
#endif