Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[pandora-kernel.git] / drivers / net / wireless / wl12xx / acx.h
index dd19b01..d2eb86e 100644 (file)
@@ -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_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_PARAMS_MAX];
+       __le32 params[CONF_SG_AP_PARAMS_MAX];
        u8 param_idx;
        u8 padding[3];
 } __packed;
 
+
 struct acx_dco_itrim_params {
        struct acx_header header;
 
@@ -820,6 +828,8 @@ struct wl1271_acx_sta_config_memory {
        u8 tx_free_req;
        u8 rx_free_req;
        u8 tx_min;
+       u8 fwlog_blocks;
+       u8 padding[3];
 } __packed;
 
 struct wl1271_acx_mem_map {
@@ -939,6 +949,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,
@@ -1135,7 +1155,20 @@ struct wl1271_acx_fw_tsf_information {
        u8 padding[3];
 } __packed;
 
-struct wl1271_acx_max_tx_retry {
+struct wl1271_acx_ps_rx_streaming {
+       struct acx_header header;
+
+       u8 tid;
+       u8 enable;
+
+       /* interval between triggers (10-100 msec) */
+       u8 period;
+
+       /* timeout before first trigger (0-200 msec) */
+       u8 timeout;
+} __packed;
+
+struct wl1271_acx_ap_max_tx_retry {
        struct acx_header header;
 
        /*
@@ -1162,6 +1195,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 +1279,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 +1291,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 +1348,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 +1372,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);
@@ -1296,8 +1399,11 @@ int wl1271_acx_set_ba_session(struct wl1271 *wl,
 int wl1271_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index, u16 ssn,
                                       bool enable);
 int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);
-int wl1271_acx_max_tx_retry(struct wl1271 *wl);
+int wl1271_acx_ps_rx_streaming(struct wl1271 *wl, bool enable);
+int wl1271_acx_ap_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__ */