aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx/wl12xx.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl12xx.h')
-rw-r--r--drivers/net/wireless/wl12xx/wl12xx.h66
1 files changed, 45 insertions, 21 deletions
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h
index d1de13fe7d9a..1d6c94304b1a 100644
--- a/drivers/net/wireless/wl12xx/wl12xx.h
+++ b/drivers/net/wireless/wl12xx/wl12xx.h
@@ -130,7 +130,7 @@ extern u32 wl12xx_debug_level;
130 130
131 131
132 132
133#define WL1271_FW_NAME "wl1271-fw.bin" 133#define WL1271_FW_NAME "wl1271-fw-2.bin"
134#define WL1271_AP_FW_NAME "wl1271-fw-ap.bin" 134#define WL1271_AP_FW_NAME "wl1271-fw-ap.bin"
135 135
136#define WL1271_NVS_NAME "wl1271-nvs.bin" 136#define WL1271_NVS_NAME "wl1271-nvs.bin"
@@ -214,8 +214,8 @@ struct wl1271_stats {
214/* Broadcast and Global links + links to stations */ 214/* Broadcast and Global links + links to stations */
215#define AP_MAX_LINKS (AP_MAX_STATIONS + 2) 215#define AP_MAX_LINKS (AP_MAX_STATIONS + 2)
216 216
217/* FW status registers */ 217/* FW status registers common for AP/STA */
218struct wl1271_fw_status { 218struct wl1271_fw_common_status {
219 __le32 intr; 219 __le32 intr;
220 u8 fw_rx_counter; 220 u8 fw_rx_counter;
221 u8 drv_rx_counter; 221 u8 drv_rx_counter;
@@ -224,6 +224,11 @@ struct wl1271_fw_status {
224 __le32 rx_pkt_descs[NUM_RX_PKT_DESC]; 224 __le32 rx_pkt_descs[NUM_RX_PKT_DESC];
225 __le32 tx_released_blks[NUM_TX_QUEUES]; 225 __le32 tx_released_blks[NUM_TX_QUEUES];
226 __le32 fw_localtime; 226 __le32 fw_localtime;
227} __packed;
228
229/* FW status registers for AP */
230struct wl1271_fw_ap_status {
231 struct wl1271_fw_common_status common;
227 232
228 /* Next fields valid only in AP FW */ 233 /* Next fields valid only in AP FW */
229 234
@@ -238,6 +243,24 @@ struct wl1271_fw_status {
238 u8 padding_1[1]; 243 u8 padding_1[1];
239} __packed; 244} __packed;
240 245
246/* FW status registers for STA */
247struct wl1271_fw_sta_status {
248 struct wl1271_fw_common_status common;
249
250 u8 tx_total;
251 u8 reserved1;
252 __le16 reserved2;
253} __packed;
254
255struct wl1271_fw_full_status {
256 union {
257 struct wl1271_fw_common_status common;
258 struct wl1271_fw_sta_status sta;
259 struct wl1271_fw_ap_status ap;
260 };
261} __packed;
262
263
241struct wl1271_rx_mem_pool_addr { 264struct wl1271_rx_mem_pool_addr {
242 u32 addr; 265 u32 addr;
243 u32 addr_extra; 266 u32 addr_extra;
@@ -278,6 +301,24 @@ struct wl1271_ap_key {
278 u16 tx_seq_16; 301 u16 tx_seq_16;
279}; 302};
280 303
304enum wl12xx_flags {
305 WL1271_FLAG_STA_ASSOCIATED,
306 WL1271_FLAG_JOINED,
307 WL1271_FLAG_GPIO_POWER,
308 WL1271_FLAG_TX_QUEUE_STOPPED,
309 WL1271_FLAG_IN_ELP,
310 WL1271_FLAG_PSM,
311 WL1271_FLAG_PSM_REQUESTED,
312 WL1271_FLAG_IRQ_PENDING,
313 WL1271_FLAG_IRQ_RUNNING,
314 WL1271_FLAG_IDLE,
315 WL1271_FLAG_IDLE_REQUESTED,
316 WL1271_FLAG_PSPOLL_FAILURE,
317 WL1271_FLAG_STA_STATE_SENT,
318 WL1271_FLAG_FW_TX_BUSY,
319 WL1271_FLAG_AP_STARTED
320};
321
281struct wl1271 { 322struct wl1271 {
282 struct platform_device *plat_dev; 323 struct platform_device *plat_dev;
283 struct ieee80211_hw *hw; 324 struct ieee80211_hw *hw;
@@ -296,22 +337,6 @@ struct wl1271 {
296 enum wl1271_state state; 337 enum wl1271_state state;
297 struct mutex mutex; 338 struct mutex mutex;
298 339
299#define WL1271_FLAG_STA_RATES_CHANGED (0)
300#define WL1271_FLAG_STA_ASSOCIATED (1)
301#define WL1271_FLAG_JOINED (2)
302#define WL1271_FLAG_GPIO_POWER (3)
303#define WL1271_FLAG_TX_QUEUE_STOPPED (4)
304#define WL1271_FLAG_IN_ELP (5)
305#define WL1271_FLAG_PSM (6)
306#define WL1271_FLAG_PSM_REQUESTED (7)
307#define WL1271_FLAG_IRQ_PENDING (8)
308#define WL1271_FLAG_IRQ_RUNNING (9)
309#define WL1271_FLAG_IDLE (10)
310#define WL1271_FLAG_IDLE_REQUESTED (11)
311#define WL1271_FLAG_PSPOLL_FAILURE (12)
312#define WL1271_FLAG_STA_STATE_SENT (13)
313#define WL1271_FLAG_FW_TX_BUSY (14)
314#define WL1271_FLAG_AP_STARTED (15)
315 unsigned long flags; 340 unsigned long flags;
316 341
317 struct wl1271_partition_set part; 342 struct wl1271_partition_set part;
@@ -405,7 +430,6 @@ struct wl1271 {
405 * bits 16-23 - 802.11n MCS index mask 430 * bits 16-23 - 802.11n MCS index mask
406 * support only 1 stream, thus only 8 bits for the MCS rates (0-7). 431 * support only 1 stream, thus only 8 bits for the MCS rates (0-7).
407 */ 432 */
408 u32 sta_rate_set;
409 u32 basic_rate_set; 433 u32 basic_rate_set;
410 u32 basic_rate; 434 u32 basic_rate;
411 u32 rate_set; 435 u32 rate_set;
@@ -445,7 +469,7 @@ struct wl1271 {
445 u32 buffer_cmd; 469 u32 buffer_cmd;
446 u32 buffer_busyword[WL1271_BUSY_WORD_CNT]; 470 u32 buffer_busyword[WL1271_BUSY_WORD_CNT];
447 471
448 struct wl1271_fw_status *fw_status; 472 struct wl1271_fw_full_status *fw_status;
449 struct wl1271_tx_hw_res_if *tx_res_if; 473 struct wl1271_tx_hw_res_if *tx_res_if;
450 474
451 struct ieee80211_vif *vif; 475 struct ieee80211_vif *vif;