blob: 508b9f98c5c5aa4ce2de7d4b2d1f65c8e2605005 [file] [log] [blame]
#ifndef _ATH11K_SMART_ANT_API_
#define _ATH11K_SMART_ANT_API_
#define SA_API_VERSION_UNDEF 0
#define SA_API_VERSION 1
#define SMART_ANT_RX_CONFIG_REQUIRED 0x01
#define SMART_ANT_TRAINING_REQUIRED 0x02
#define SMART_ANT_TX_CONFIG_REQUIRED 0x04
#define SMART_ANT_TX_FEEDBACK_CONFIG_REQUIRED 0x08
#define SA_TX_FEEDBACK_CONFIG 0x01
#define SMART_ANT_STATUS_SUCCESS 0
#define SMART_ANT_STATUS_FAILURE -1
struct sa_radio_info {
u32 radio_id;
u8 chainmask;
u8 opmode;
u8 channel_num;
};
struct sa_node_info {
u8 mac_addr[6];
u32 radio_id;
u8 max_ch_bw;
u8 chainmask;
u8 opmode;
u8 channel_num;
u32 ni_cap;
};
struct ath11k_smartantenna_ops {
int sa_api_version;
int (*sa_radio_init)(struct sa_radio_info *radio);
int (*sa_radio_deinit)(struct sa_radio_info *radio);
int (*sa_node_connect)(struct sa_node_info *node);
int (*sa_node_disconnect)(struct sa_node_info *node, uint8_t *status);
int (*sa_update_txfeedback)(struct sa_node_info *node,
struct ath11k_smart_ant_tx_feedback *txfeedback,
uint8_t *status);
int (*sa_update_rxfeedback)(struct sa_node_info *node,
struct ath11k_smart_ant_rx_feedback *rxfeedback,
uint8_t *status);
int (*sa_get_txantenna)(struct sa_node_info *node, uint32_t *antenna);
int (*sa_get_rxantenna)(struct sa_radio_info *radio, uint32_t *antenna);
int (*sa_get_txantenna_default)(struct sa_radio_info *radio,
uint32_t *antenna);
};
#endif //_ATH11K_SMART_ANT_API_