diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx/acx.h')
| -rw-r--r-- | drivers/net/wireless/wl12xx/acx.h | 102 | 
1 files changed, 96 insertions, 6 deletions
diff --git a/drivers/net/wireless/wl12xx/acx.h b/drivers/net/wireless/wl12xx/acx.h index dd19b01d807..9a895e3cc61 100644 --- a/drivers/net/wireless/wl12xx/acx.h +++ b/drivers/net/wireless/wl12xx/acx.h @@ -303,7 +303,6 @@ struct acx_beacon_filter_option {  	struct acx_header header;  	u8 enable; -  	/*  	 * The number of beacons without the unicast TIM  	 * bit set that the firmware buffers before @@ -370,14 +369,23 @@ struct acx_bt_wlan_coex {  	u8 pad[3];  } __packed; -struct acx_bt_wlan_coex_param { +struct acx_sta_bt_wlan_coex_param {  	struct acx_header header; -	__le32 params[CONF_SG_PARAMS_MAX]; +	__le32 params[CONF_SG_STA_PARAMS_MAX];  	u8 param_idx;  	u8 padding[3];  } __packed; +struct acx_ap_bt_wlan_coex_param { +	struct acx_header header; + +	__le32 params[CONF_SG_AP_PARAMS_MAX]; +	u8 param_idx; +	u8 padding[3]; +} __packed; + +  struct acx_dco_itrim_params {  	struct acx_header header; @@ -939,6 +947,16 @@ struct wl1271_acx_keep_alive_config {  	u8 padding;  } __packed; +#define HOST_IF_CFG_RX_FIFO_ENABLE     BIT(0) +#define HOST_IF_CFG_TX_EXTRA_BLKS_SWAP BIT(1) +#define HOST_IF_CFG_TX_PAD_TO_SDIO_BLK BIT(3) + +struct wl1271_acx_host_config_bitmap { +	struct acx_header header; + +	__le32 host_cfg_bitmap; +} __packed; +  enum {  	WL1271_ACX_TRIG_TYPE_LEVEL = 0,  	WL1271_ACX_TRIG_TYPE_EDGE, @@ -1162,6 +1180,72 @@ struct wl1271_acx_inconnection_sta {  	u8 padding1[2];  } __packed; +struct acx_ap_beacon_filter { +	struct acx_header header; + +	u8 enable; +	u8 pad[3]; +} __packed; + +/* + * ACX_FM_COEX_CFG + * set the FM co-existence parameters. + */ +struct wl1271_acx_fm_coex { +	struct acx_header header; +	/* enable(1) / disable(0) the FM Coex feature */ +	u8 enable; +	/* +	 * Swallow period used in COEX PLL swallowing mechanism. +	 * 0xFF = use FW default +	 */ +	u8 swallow_period; +	/* +	 * The N divider used in COEX PLL swallowing mechanism for Fref of +	 * 38.4/19.2 Mhz. 0xFF = use FW default +	 */ +	u8 n_divider_fref_set_1; +	/* +	 * The N divider used in COEX PLL swallowing mechanism for Fref of +	 * 26/52 Mhz. 0xFF = use FW default +	 */ +	u8 n_divider_fref_set_2; +	/* +	 * The M divider used in COEX PLL swallowing mechanism for Fref of +	 * 38.4/19.2 Mhz. 0xFFFF = use FW default +	 */ +	__le16 m_divider_fref_set_1; +	/* +	 * The M divider used in COEX PLL swallowing mechanism for Fref of +	 * 26/52 Mhz. 0xFFFF = use FW default +	 */ +	__le16 m_divider_fref_set_2; +	/* +	 * The time duration in uSec required for COEX PLL to stabilize. +	 * 0xFFFFFFFF = use FW default +	 */ +	__le32 coex_pll_stabilization_time; +	/* +	 * The time duration in uSec required for LDO to stabilize. +	 * 0xFFFFFFFF = use FW default +	 */ +	__le16 ldo_stabilization_time; +	/* +	 * The disturbed frequency band margin around the disturbed frequency +	 * center (single sided). +	 * For example, if 2 is configured, the following channels will be +	 * considered disturbed channel: +	 *   80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MH +	 * 0xFF = use FW default +	 */ +	u8 fm_disturbed_band_margin; +	/* +	 * The swallow clock difference of the swallowing mechanism. +	 * 0xFF = use FW default +	 */ +	u8 swallow_clk_diff; +} __packed; +  enum {  	ACX_WAKE_UP_CONDITIONS      = 0x0002,  	ACX_MEM_CFG                 = 0x0003, @@ -1180,6 +1264,7 @@ enum {  	ACX_TID_CFG                 = 0x001A,  	ACX_PS_RX_STREAMING         = 0x001B,  	ACX_BEACON_FILTER_OPT       = 0x001F, +	ACX_AP_BEACON_FILTER_OPT    = 0x0020,  	ACX_NOISE_HIST              = 0x0021,  	ACX_HDK_VERSION             = 0x0022, /* ??? */  	ACX_PD_THRESHOLD            = 0x0023, @@ -1191,6 +1276,7 @@ enum {  	ACX_BCN_DTIM_OPTIONS        = 0x0031,  	ACX_SG_ENABLE               = 0x0032,  	ACX_SG_CFG                  = 0x0033, +	ACX_FM_COEX_CFG             = 0x0034,  	ACX_BEACON_FILTER_TABLE     = 0x0038,  	ACX_ARP_IP_FILTER           = 0x0039,  	ACX_ROAMING_STATISTICS_TBL  = 0x003B, @@ -1247,13 +1333,14 @@ int wl1271_acx_slot(struct wl1271 *wl, enum acx_slot_type slot_time);  int wl1271_acx_group_address_tbl(struct wl1271 *wl, bool enable,  				 void *mc_list, u32 mc_list_len);  int wl1271_acx_service_period_timeout(struct wl1271 *wl); -int wl1271_acx_rts_threshold(struct wl1271 *wl, u16 rts_threshold); +int wl1271_acx_rts_threshold(struct wl1271 *wl, u32 rts_threshold);  int wl1271_acx_dco_itrim_params(struct wl1271 *wl);  int wl1271_acx_beacon_filter_opt(struct wl1271 *wl, bool enable_filter);  int wl1271_acx_beacon_filter_table(struct wl1271 *wl);  int wl1271_acx_conn_monit_params(struct wl1271 *wl, bool enable);  int wl1271_acx_sg_enable(struct wl1271 *wl, bool enable); -int wl1271_acx_sg_cfg(struct wl1271 *wl); +int wl1271_acx_sta_sg_cfg(struct wl1271 *wl); +int wl1271_acx_ap_sg_cfg(struct wl1271 *wl);  int wl1271_acx_cca_threshold(struct wl1271 *wl);  int wl1271_acx_bcn_dtim_options(struct wl1271 *wl);  int wl1271_acx_aid(struct wl1271 *wl, u16 aid); @@ -1270,11 +1357,12 @@ int wl1271_acx_ac_cfg(struct wl1271 *wl, u8 ac, u8 cw_min, u16 cw_max,  int wl1271_acx_tid_cfg(struct wl1271 *wl, u8 queue_id, u8 channel_type,  		       u8 tsid, u8 ps_scheme, u8 ack_policy,  		       u32 apsd_conf0, u32 apsd_conf1); -int wl1271_acx_frag_threshold(struct wl1271 *wl, u16 frag_threshold); +int wl1271_acx_frag_threshold(struct wl1271 *wl, u32 frag_threshold);  int wl1271_acx_tx_config_options(struct wl1271 *wl);  int wl1271_acx_ap_mem_cfg(struct wl1271 *wl);  int wl1271_acx_sta_mem_cfg(struct wl1271 *wl);  int wl1271_acx_init_mem_config(struct wl1271 *wl); +int wl1271_acx_host_if_cfg_bitmap(struct wl1271 *wl, u32 host_cfg_bitmap);  int wl1271_acx_init_rx_interrupt(struct wl1271 *wl);  int wl1271_acx_smart_reflex(struct wl1271 *wl);  int wl1271_acx_bet_enable(struct wl1271 *wl, bool enable); @@ -1299,5 +1387,7 @@ int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);  int wl1271_acx_max_tx_retry(struct wl1271 *wl);  int wl1271_acx_config_ps(struct wl1271 *wl);  int wl1271_acx_set_inconnection_sta(struct wl1271 *wl, u8 *addr); +int wl1271_acx_set_ap_beacon_filter(struct wl1271 *wl, bool enable); +int wl1271_acx_fm_coex(struct wl1271 *wl);  #endif /* __WL1271_ACX_H__ */  |