aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/carl9170
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@googlemail.com>2011-06-30 14:27:47 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-07-05 15:26:51 -0400
commit85ee5122abbc1b5c5f3622e46942291a2f6f1261 (patch)
tree12a0b33c25255957a1cb0421bf7e3a1614769057 /drivers/net/wireless/ath/carl9170
parent3b4670ffe7824d1fc4db2f73101015056ecb4415 (diff)
carl9170: import 1.9.4 firmware headers
This patch imports all shared header changes from carl9170fw.git. * update copyright boilerplate * add some more strategic __aligned(4). * WoWLAN Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/carl9170')
-rw-r--r--drivers/net/wireless/ath/carl9170/carl9170.h2
-rw-r--r--drivers/net/wireless/ath/carl9170/fwcmd.h19
-rw-r--r--drivers/net/wireless/ath/carl9170/fwdesc.h18
-rw-r--r--drivers/net/wireless/ath/carl9170/hw.h15
-rw-r--r--drivers/net/wireless/ath/carl9170/version.h6
-rw-r--r--drivers/net/wireless/ath/carl9170/wlan.h25
6 files changed, 63 insertions, 22 deletions
diff --git a/drivers/net/wireless/ath/carl9170/carl9170.h b/drivers/net/wireless/ath/carl9170/carl9170.h
index 4da01a9f5680..d96d03ff1209 100644
--- a/drivers/net/wireless/ath/carl9170/carl9170.h
+++ b/drivers/net/wireless/ath/carl9170/carl9170.h
@@ -67,6 +67,8 @@
67 67
68#define PAYLOAD_MAX (CARL9170_MAX_CMD_LEN / 4 - 1) 68#define PAYLOAD_MAX (CARL9170_MAX_CMD_LEN / 4 - 1)
69 69
70static const u8 ar9170_qmap[__AR9170_NUM_TXQ] = { 3, 2, 1, 0 };
71
70enum carl9170_rf_init_mode { 72enum carl9170_rf_init_mode {
71 CARL9170_RFI_NONE, 73 CARL9170_RFI_NONE,
72 CARL9170_RFI_WARM, 74 CARL9170_RFI_WARM,
diff --git a/drivers/net/wireless/ath/carl9170/fwcmd.h b/drivers/net/wireless/ath/carl9170/fwcmd.h
index 30449d21b762..0a6dec529b59 100644
--- a/drivers/net/wireless/ath/carl9170/fwcmd.h
+++ b/drivers/net/wireless/ath/carl9170/fwcmd.h
@@ -4,7 +4,7 @@
4 * Firmware command interface definitions 4 * Firmware command interface definitions
5 * 5 *
6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
7 * Copyright 2009, 2010, Christian Lamparter <chunkeey@googlemail.com> 7 * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
@@ -54,6 +54,7 @@ enum carl9170_cmd_oids {
54 CARL9170_CMD_BCN_CTRL = 0x05, 54 CARL9170_CMD_BCN_CTRL = 0x05,
55 CARL9170_CMD_READ_TSF = 0x06, 55 CARL9170_CMD_READ_TSF = 0x06,
56 CARL9170_CMD_RX_FILTER = 0x07, 56 CARL9170_CMD_RX_FILTER = 0x07,
57 CARL9170_CMD_WOL = 0x08,
57 58
58 /* CAM */ 59 /* CAM */
59 CARL9170_CMD_EKEY = 0x10, 60 CARL9170_CMD_EKEY = 0x10,
@@ -180,6 +181,21 @@ struct carl9170_bcn_ctrl_cmd {
180#define CARL9170_BCN_CTRL_DRAIN 0 181#define CARL9170_BCN_CTRL_DRAIN 0
181#define CARL9170_BCN_CTRL_CAB_TRIGGER 1 182#define CARL9170_BCN_CTRL_CAB_TRIGGER 1
182 183
184struct carl9170_wol_cmd {
185 __le32 flags;
186 u8 mac[6];
187 u8 bssid[6];
188 __le32 null_interval;
189 __le32 free_for_use2;
190 __le32 mask;
191 u8 pattern[32];
192} __packed;
193
194#define CARL9170_WOL_CMD_SIZE 60
195
196#define CARL9170_WOL_DISCONNECT 1
197#define CARL9170_WOL_MAGIC_PKT 2
198
183struct carl9170_cmd_head { 199struct carl9170_cmd_head {
184 union { 200 union {
185 struct { 201 struct {
@@ -203,6 +219,7 @@ struct carl9170_cmd {
203 struct carl9170_write_reg wreg; 219 struct carl9170_write_reg wreg;
204 struct carl9170_rf_init rf_init; 220 struct carl9170_rf_init rf_init;
205 struct carl9170_psm psm; 221 struct carl9170_psm psm;
222 struct carl9170_wol_cmd wol;
206 struct carl9170_bcn_ctrl_cmd bcn_ctrl; 223 struct carl9170_bcn_ctrl_cmd bcn_ctrl;
207 struct carl9170_rx_filter_cmd rx_filter; 224 struct carl9170_rx_filter_cmd rx_filter;
208 u8 data[CARL9170_MAX_CMD_PAYLOAD_LEN]; 225 u8 data[CARL9170_MAX_CMD_PAYLOAD_LEN];
diff --git a/drivers/net/wireless/ath/carl9170/fwdesc.h b/drivers/net/wireless/ath/carl9170/fwdesc.h
index 921066822dd5..7ba62bb77054 100644
--- a/drivers/net/wireless/ath/carl9170/fwdesc.h
+++ b/drivers/net/wireless/ath/carl9170/fwdesc.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Firmware descriptor format 4 * Firmware descriptor format
5 * 5 *
6 * Copyright 2009, 2010, Christian Lamparter <chunkeey@googlemail.com> 6 * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -72,6 +72,9 @@ enum carl9170fw_feature_list {
72 /* Wake up on WLAN */ 72 /* Wake up on WLAN */
73 CARL9170FW_WOL, 73 CARL9170FW_WOL,
74 74
75 /* Firmware supports PSM in the 5GHZ Band */
76 CARL9170FW_FIXED_5GHZ_PSM,
77
75 /* KEEP LAST */ 78 /* KEEP LAST */
76 __CARL9170FW_FEATURE_NUM 79 __CARL9170FW_FEATURE_NUM
77}; 80};
@@ -82,6 +85,7 @@ enum carl9170fw_feature_list {
82#define DBG_MAGIC "DBG\0" 85#define DBG_MAGIC "DBG\0"
83#define CHK_MAGIC "CHK\0" 86#define CHK_MAGIC "CHK\0"
84#define TXSQ_MAGIC "TXSQ" 87#define TXSQ_MAGIC "TXSQ"
88#define WOL_MAGIC "WOL\0"
85#define LAST_MAGIC "LAST" 89#define LAST_MAGIC "LAST"
86 90
87#define CARL9170FW_SET_DAY(d) (((d) - 1) % 31) 91#define CARL9170FW_SET_DAY(d) (((d) - 1) % 31)
@@ -104,7 +108,7 @@ struct carl9170fw_desc_head {
104 (sizeof(struct carl9170fw_desc_head)) 108 (sizeof(struct carl9170fw_desc_head))
105 109
106#define CARL9170FW_OTUS_DESC_MIN_VER 6 110#define CARL9170FW_OTUS_DESC_MIN_VER 6
107#define CARL9170FW_OTUS_DESC_CUR_VER 6 111#define CARL9170FW_OTUS_DESC_CUR_VER 7
108struct carl9170fw_otus_desc { 112struct carl9170fw_otus_desc {
109 struct carl9170fw_desc_head head; 113 struct carl9170fw_desc_head head;
110 __le32 feature_set; 114 __le32 feature_set;
@@ -186,6 +190,16 @@ struct carl9170fw_txsq_desc {
186#define CARL9170FW_TXSQ_DESC_SIZE \ 190#define CARL9170FW_TXSQ_DESC_SIZE \
187 (sizeof(struct carl9170fw_txsq_desc)) 191 (sizeof(struct carl9170fw_txsq_desc))
188 192
193#define CARL9170FW_WOL_DESC_MIN_VER 1
194#define CARL9170FW_WOL_DESC_CUR_VER 1
195struct carl9170fw_wol_desc {
196 struct carl9170fw_desc_head head;
197
198 __le32 supported_triggers; /* CARL9170_WOL_ */
199} __packed;
200#define CARL9170FW_WOL_DESC_SIZE \
201 (sizeof(struct carl9170fw_wol_desc))
202
189#define CARL9170FW_LAST_DESC_MIN_VER 1 203#define CARL9170FW_LAST_DESC_MIN_VER 1
190#define CARL9170FW_LAST_DESC_CUR_VER 2 204#define CARL9170FW_LAST_DESC_CUR_VER 2
191struct carl9170fw_last_desc { 205struct carl9170fw_last_desc {
diff --git a/drivers/net/wireless/ath/carl9170/hw.h b/drivers/net/wireless/ath/carl9170/hw.h
index 4e30762dd903..261f89351070 100644
--- a/drivers/net/wireless/ath/carl9170/hw.h
+++ b/drivers/net/wireless/ath/carl9170/hw.h
@@ -4,7 +4,7 @@
4 * Register map, hardware-specific definitions 4 * Register map, hardware-specific definitions
5 * 5 *
6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
7 * Copyright 2009, 2010, Christian Lamparter <chunkeey@googlemail.com> 7 * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
@@ -357,7 +357,18 @@
357 357
358#define AR9170_MAC_REG_DMA_WLAN_STATUS (AR9170_MAC_REG_BASE + 0xd38) 358#define AR9170_MAC_REG_DMA_WLAN_STATUS (AR9170_MAC_REG_BASE + 0xd38)
359#define AR9170_MAC_REG_DMA_STATUS (AR9170_MAC_REG_BASE + 0xd3c) 359#define AR9170_MAC_REG_DMA_STATUS (AR9170_MAC_REG_BASE + 0xd3c)
360 360#define AR9170_MAC_REG_DMA_TXQ_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
361#define AR9170_MAC_REG_DMA_TXQ0_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
362#define AR9170_MAC_REG_DMA_TXQ1_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd44)
363#define AR9170_MAC_REG_DMA_TXQ2_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd48)
364#define AR9170_MAC_REG_DMA_TXQ3_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd4c)
365#define AR9170_MAC_REG_DMA_TXQ4_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd50)
366#define AR9170_MAC_REG_DMA_TXQ0Q1_LEN (AR9170_MAC_REG_BASE + 0xd54)
367#define AR9170_MAC_REG_DMA_TXQ2Q3_LEN (AR9170_MAC_REG_BASE + 0xd58)
368#define AR9170_MAC_REG_DMA_TXQ4_LEN (AR9170_MAC_REG_BASE + 0xd5c)
369
370#define AR9170_MAC_REG_DMA_TXQX_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd74)
371#define AR9170_MAC_REG_DMA_TXQX_FAIL_ADDR (AR9170_MAC_REG_BASE + 0xd78)
361#define AR9170_MAC_REG_TXRX_MPI (AR9170_MAC_REG_BASE + 0xd7c) 372#define AR9170_MAC_REG_TXRX_MPI (AR9170_MAC_REG_BASE + 0xd7c)
362#define AR9170_MAC_TXRX_MPI_TX_MPI_MASK 0x0000000f 373#define AR9170_MAC_TXRX_MPI_TX_MPI_MASK 0x0000000f
363#define AR9170_MAC_TXRX_MPI_TX_TO_MASK 0x0000fff0 374#define AR9170_MAC_TXRX_MPI_TX_TO_MASK 0x0000fff0
diff --git a/drivers/net/wireless/ath/carl9170/version.h b/drivers/net/wireless/ath/carl9170/version.h
index 15095c035169..64703778cfea 100644
--- a/drivers/net/wireless/ath/carl9170/version.h
+++ b/drivers/net/wireless/ath/carl9170/version.h
@@ -1,7 +1,7 @@
1#ifndef __CARL9170_SHARED_VERSION_H 1#ifndef __CARL9170_SHARED_VERSION_H
2#define __CARL9170_SHARED_VERSION_H 2#define __CARL9170_SHARED_VERSION_H
3#define CARL9170FW_VERSION_YEAR 11 3#define CARL9170FW_VERSION_YEAR 11
4#define CARL9170FW_VERSION_MONTH 1 4#define CARL9170FW_VERSION_MONTH 6
5#define CARL9170FW_VERSION_DAY 22 5#define CARL9170FW_VERSION_DAY 30
6#define CARL9170FW_VERSION_GIT "1.9.2" 6#define CARL9170FW_VERSION_GIT "1.9.4"
7#endif /* __CARL9170_SHARED_VERSION_H */ 7#endif /* __CARL9170_SHARED_VERSION_H */
diff --git a/drivers/net/wireless/ath/carl9170/wlan.h b/drivers/net/wireless/ath/carl9170/wlan.h
index 9e1324b67e08..ea17995b32f4 100644
--- a/drivers/net/wireless/ath/carl9170/wlan.h
+++ b/drivers/net/wireless/ath/carl9170/wlan.h
@@ -4,7 +4,7 @@
4 * RX/TX meta descriptor format 4 * RX/TX meta descriptor format
5 * 5 *
6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
7 * Copyright 2009, 2010, Christian Lamparter <chunkeey@googlemail.com> 7 * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
@@ -278,7 +278,7 @@ struct ar9170_tx_frame {
278struct carl9170_tx_superframe { 278struct carl9170_tx_superframe {
279 struct carl9170_tx_superdesc s; 279 struct carl9170_tx_superdesc s;
280 struct ar9170_tx_frame f; 280 struct ar9170_tx_frame f;
281} __packed; 281} __packed __aligned(4);
282 282
283#endif /* __CARL9170FW__ */ 283#endif /* __CARL9170FW__ */
284 284
@@ -328,7 +328,7 @@ struct _carl9170_tx_superframe {
328 struct _carl9170_tx_superdesc s; 328 struct _carl9170_tx_superdesc s;
329 struct _ar9170_tx_hwdesc f; 329 struct _ar9170_tx_hwdesc f;
330 u8 frame_data[0]; 330 u8 frame_data[0];
331} __packed; 331} __packed __aligned(4);
332 332
333#define CARL9170_TX_SUPERDESC_LEN 24 333#define CARL9170_TX_SUPERDESC_LEN 24
334#define AR9170_TX_HWDESC_LEN 8 334#define AR9170_TX_HWDESC_LEN 8
@@ -404,16 +404,6 @@ static inline u8 ar9170_get_decrypt_type(struct ar9170_rx_macstatus *t)
404 (t->DAidx & 0xc0) >> 6; 404 (t->DAidx & 0xc0) >> 6;
405} 405}
406 406
407enum ar9170_txq {
408 AR9170_TXQ_BE,
409
410 AR9170_TXQ_VI,
411 AR9170_TXQ_VO,
412 AR9170_TXQ_BK,
413
414 __AR9170_NUM_TXQ,
415};
416
417/* 407/*
418 * This is an workaround for several undocumented bugs. 408 * This is an workaround for several undocumented bugs.
419 * Don't mess with the QoS/AC <-> HW Queue map, if you don't 409 * Don't mess with the QoS/AC <-> HW Queue map, if you don't
@@ -431,7 +421,14 @@ enum ar9170_txq {
431 * result, this makes the device pretty much useless 421 * result, this makes the device pretty much useless
432 * for any serious 802.11n setup. 422 * for any serious 802.11n setup.
433 */ 423 */
434static const u8 ar9170_qmap[__AR9170_NUM_TXQ] = { 2, 1, 0, 3 }; 424enum ar9170_txq {
425 AR9170_TXQ_BK = 0, /* TXQ0 */
426 AR9170_TXQ_BE, /* TXQ1 */
427 AR9170_TXQ_VI, /* TXQ2 */
428 AR9170_TXQ_VO, /* TXQ3 */
429
430 __AR9170_NUM_TXQ,
431};
435 432
436#define AR9170_TXQ_DEPTH 32 433#define AR9170_TXQ_DEPTH 32
437 434