aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-10-07 15:40:44 -0400
committerDavid S. Miller <davem@davemloft.net>2013-10-07 15:40:44 -0400
commit7009deab19d7be03e05f67ceac56cfdfc73aa71c (patch)
tree106f789a079e606753809fad4290644a9310d62d /drivers/net/wireless/rt2x00
parent5cde282938915f36a2e6769b51c24c4159654859 (diff)
parent274dede8c52036a1849ea970fab8d185fb0dce2b (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
Conflicts: drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h drivers/net/wireless/rtlwifi/rtl8188ee/phy.h drivers/net/wireless/rtlwifi/rtl8192ce/phy.h drivers/net/wireless/rtlwifi/rtl8192de/phy.h drivers/net/wireless/rtlwifi/rtl8723ae/phy.h Just some minor conflicts between the wireless-next changes and Joe Perches's "extern" removal from function prototypes in header files. John W. Linville says: ==================== Regarding the Bluetooth bits, Gustavo says: "The big work here is from Marcel and Johan. They did a lot of work in the L2CAP, HCI and MGMT layers. The most important ones are the addition of a new MGMT command to enable/disable LE advertisement and the introduction of the HCI user channel to allow applications to get directly and exclusive access to Bluetooth devices." As to the ath10k bits, Kalle says: "Bartosz dropped support for qca98xx hw1.0 hardware from ath10k, it's just too much to support it. Michal added support for the new firmware interface. Marek fixed WEP in AP and IBSS mode. Rest of the changes are minor fixes or cleanups." And also: "Major changes are: * throughput improvements including aligning the RX frames correctly and optimising HTT layer (Michal) * remove qca98xx hw1.0 support (Bartosz) * add support for firmware version 999.999.0.636 (Michal) * firmware htt statistics support (Kalle) * fix WEP in AP and IBSS mode (Marek) * fix a mutex unlock balance in debugfs file (Shafi) And of course there's a lot of smaller fixes and cleanup." For the wl12xx bits, Luca says: "Here are some patches intended for 3.13. Eliad is upstreaming a bunch of patches that have been pending in the internal tree. Mostly bugfixes and other small improvements." Along with that... Arend and friends bring us a batch of brcmfmac updates, Larry Finger offers some rtlwifi refactoring, and Sujith sends the usual batch of ath9k updates. As usual, there are a number of other small updates from a variety of players as well. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c49
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c17
3 files changed, 54 insertions, 14 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index fa33b5edf931..e3eb95292a7f 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -52,6 +52,7 @@
52 * RF3322 2.4G 2T2R(RT3352/RT3371/RT3372/RT3391/RT3392) 52 * RF3322 2.4G 2T2R(RT3352/RT3371/RT3372/RT3391/RT3392)
53 * RF3053 2.4G/5G 3T3R(RT3883/RT3563/RT3573/RT3593/RT3662) 53 * RF3053 2.4G/5G 3T3R(RT3883/RT3563/RT3573/RT3593/RT3662)
54 * RF5592 2.4G/5G 2T2R 54 * RF5592 2.4G/5G 2T2R
55 * RF3070 2.4G 1T1R
55 * RF5360 2.4G 1T1R 56 * RF5360 2.4G 1T1R
56 * RF5370 2.4G 1T1R 57 * RF5370 2.4G 1T1R
57 * RF5390 2.4G 1T1R 58 * RF5390 2.4G 1T1R
@@ -70,6 +71,7 @@
70#define RF3322 0x000c 71#define RF3322 0x000c
71#define RF3053 0x000d 72#define RF3053 0x000d
72#define RF5592 0x000f 73#define RF5592 0x000f
74#define RF3070 0x3070
73#define RF3290 0x3290 75#define RF3290 0x3290
74#define RF5360 0x5360 76#define RF5360 0x5360
75#define RF5370 0x5370 77#define RF5370 0x5370
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 88ce656f96cd..25aaa5e12d4e 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -3152,6 +3152,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
3152 case RF3322: 3152 case RF3322:
3153 rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); 3153 rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
3154 break; 3154 break;
3155 case RF3070:
3155 case RF5360: 3156 case RF5360:
3156 case RF5370: 3157 case RF5370:
3157 case RF5372: 3158 case RF5372:
@@ -3166,7 +3167,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
3166 rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); 3167 rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
3167 } 3168 }
3168 3169
3169 if (rt2x00_rf(rt2x00dev, RF3290) || 3170 if (rt2x00_rf(rt2x00dev, RF3070) ||
3171 rt2x00_rf(rt2x00dev, RF3290) ||
3170 rt2x00_rf(rt2x00dev, RF3322) || 3172 rt2x00_rf(rt2x00dev, RF3322) ||
3171 rt2x00_rf(rt2x00dev, RF5360) || 3173 rt2x00_rf(rt2x00dev, RF5360) ||
3172 rt2x00_rf(rt2x00dev, RF5370) || 3174 rt2x00_rf(rt2x00dev, RF5370) ||
@@ -3315,29 +3317,37 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
3315 rt2800_rfcsr_write(rt2x00dev, 8, 0x80); 3317 rt2800_rfcsr_write(rt2x00dev, 8, 0x80);
3316 3318
3317 if (rt2x00_rt(rt2x00dev, RT3593)) { 3319 if (rt2x00_rt(rt2x00dev, RT3593)) {
3318 if (rt2x00_is_usb(rt2x00dev)) { 3320 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
3319 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
3320 3321
3321 /* Band selection. GPIO #8 controls all paths */ 3322 /* Band selection */
3323 if (rt2x00_is_usb(rt2x00dev) ||
3324 rt2x00_is_pcie(rt2x00dev)) {
3325 /* GPIO #8 controls all paths */
3322 rt2x00_set_field32(&reg, GPIO_CTRL_DIR8, 0); 3326 rt2x00_set_field32(&reg, GPIO_CTRL_DIR8, 0);
3323 if (rf->channel <= 14) 3327 if (rf->channel <= 14)
3324 rt2x00_set_field32(&reg, GPIO_CTRL_VAL8, 1); 3328 rt2x00_set_field32(&reg, GPIO_CTRL_VAL8, 1);
3325 else 3329 else
3326 rt2x00_set_field32(&reg, GPIO_CTRL_VAL8, 0); 3330 rt2x00_set_field32(&reg, GPIO_CTRL_VAL8, 0);
3331 }
3327 3332
3333 /* LNA PE control. */
3334 if (rt2x00_is_usb(rt2x00dev)) {
3335 /* GPIO #4 controls PE0 and PE1,
3336 * GPIO #7 controls PE2
3337 */
3328 rt2x00_set_field32(&reg, GPIO_CTRL_DIR4, 0); 3338 rt2x00_set_field32(&reg, GPIO_CTRL_DIR4, 0);
3329 rt2x00_set_field32(&reg, GPIO_CTRL_DIR7, 0); 3339 rt2x00_set_field32(&reg, GPIO_CTRL_DIR7, 0);
3330 3340
3331 /* LNA PE control.
3332 * GPIO #4 controls PE0 and PE1,
3333 * GPIO #7 controls PE2
3334 */
3335 rt2x00_set_field32(&reg, GPIO_CTRL_VAL4, 1); 3341 rt2x00_set_field32(&reg, GPIO_CTRL_VAL4, 1);
3336 rt2x00_set_field32(&reg, GPIO_CTRL_VAL7, 1); 3342 rt2x00_set_field32(&reg, GPIO_CTRL_VAL7, 1);
3337 3343 } else if (rt2x00_is_pcie(rt2x00dev)) {
3338 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); 3344 /* GPIO #4 controls PE0, PE1 and PE2 */
3345 rt2x00_set_field32(&reg, GPIO_CTRL_DIR4, 0);
3346 rt2x00_set_field32(&reg, GPIO_CTRL_VAL4, 1);
3339 } 3347 }
3340 3348
3349 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
3350
3341 /* AGC init */ 3351 /* AGC init */
3342 if (rf->channel <= 14) 3352 if (rf->channel <= 14)
3343 reg = 0x1c + 2 * rt2x00dev->lna_gain; 3353 reg = 0x1c + 2 * rt2x00dev->lna_gain;
@@ -4264,6 +4274,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
4264 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); 4274 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
4265 break; 4275 break;
4266 case RF3053: 4276 case RF3053:
4277 case RF3070:
4267 case RF3290: 4278 case RF3290:
4268 case RF5360: 4279 case RF5360:
4269 case RF5370: 4280 case RF5370:
@@ -5985,7 +5996,7 @@ static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
5985 rt2800_rfcsr_write(rt2x00dev, 20, 0xba); 5996 rt2800_rfcsr_write(rt2x00dev, 20, 0xba);
5986 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb); 5997 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb);
5987 rt2800_rfcsr_write(rt2x00dev, 24, 0x16); 5998 rt2800_rfcsr_write(rt2x00dev, 24, 0x16);
5988 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); 5999 rt2800_rfcsr_write(rt2x00dev, 25, 0x03);
5989 rt2800_rfcsr_write(rt2x00dev, 29, 0x1f); 6000 rt2800_rfcsr_write(rt2x00dev, 29, 0x1f);
5990 6001
5991 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { 6002 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) {
@@ -6653,17 +6664,20 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
6653 u16 word; 6664 u16 word;
6654 6665
6655 /* 6666 /*
6656 * Initialize all registers. 6667 * Initialize MAC registers.
6657 */ 6668 */
6658 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) || 6669 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) ||
6659 rt2800_init_registers(rt2x00dev))) 6670 rt2800_init_registers(rt2x00dev)))
6660 return -EIO; 6671 return -EIO;
6661 6672
6673 /*
6674 * Wait BBP/RF to wake up.
6675 */
6662 if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev))) 6676 if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev)))
6663 return -EIO; 6677 return -EIO;
6664 6678
6665 /* 6679 /*
6666 * Send signal to firmware during boot time. 6680 * Send signal during boot time to initialize firmware.
6667 */ 6681 */
6668 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); 6682 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
6669 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); 6683 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
@@ -6672,9 +6686,15 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
6672 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); 6686 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
6673 msleep(1); 6687 msleep(1);
6674 6688
6689 /*
6690 * Make sure BBP is up and running.
6691 */
6675 if (unlikely(rt2800_wait_bbp_ready(rt2x00dev))) 6692 if (unlikely(rt2800_wait_bbp_ready(rt2x00dev)))
6676 return -EIO; 6693 return -EIO;
6677 6694
6695 /*
6696 * Initialize BBP/RF registers.
6697 */
6678 rt2800_init_bbp(rt2x00dev); 6698 rt2800_init_bbp(rt2x00dev);
6679 rt2800_init_rfcsr(rt2x00dev); 6699 rt2800_init_rfcsr(rt2x00dev);
6680 6700
@@ -7021,6 +7041,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
7021 case RF3022: 7041 case RF3022:
7022 case RF3052: 7042 case RF3052:
7023 case RF3053: 7043 case RF3053:
7044 case RF3070:
7024 case RF3290: 7045 case RF3290:
7025 case RF3320: 7046 case RF3320:
7026 case RF3322: 7047 case RF3322:
@@ -7543,6 +7564,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
7543 rt2x00_rf(rt2x00dev, RF2020) || 7564 rt2x00_rf(rt2x00dev, RF2020) ||
7544 rt2x00_rf(rt2x00dev, RF3021) || 7565 rt2x00_rf(rt2x00dev, RF3021) ||
7545 rt2x00_rf(rt2x00dev, RF3022) || 7566 rt2x00_rf(rt2x00dev, RF3022) ||
7567 rt2x00_rf(rt2x00dev, RF3070) ||
7546 rt2x00_rf(rt2x00dev, RF3290) || 7568 rt2x00_rf(rt2x00dev, RF3290) ||
7547 rt2x00_rf(rt2x00dev, RF3320) || 7569 rt2x00_rf(rt2x00dev, RF3320) ||
7548 rt2x00_rf(rt2x00dev, RF3322) || 7570 rt2x00_rf(rt2x00dev, RF3322) ||
@@ -7671,6 +7693,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
7671 case RF3320: 7693 case RF3320:
7672 case RF3052: 7694 case RF3052:
7673 case RF3053: 7695 case RF3053:
7696 case RF3070:
7674 case RF3290: 7697 case RF3290:
7675 case RF5360: 7698 case RF5360:
7676 case RF5370: 7699 case RF5370:
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 96961b9a395c..96677ce55da4 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1176,6 +1176,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
1176 /* Linksys */ 1176 /* Linksys */
1177 { USB_DEVICE(0x13b1, 0x002f) }, 1177 { USB_DEVICE(0x13b1, 0x002f) },
1178 { USB_DEVICE(0x1737, 0x0079) }, 1178 { USB_DEVICE(0x1737, 0x0079) },
1179 /* Logitec */
1180 { USB_DEVICE(0x0789, 0x0170) },
1179 /* Ralink */ 1181 /* Ralink */
1180 { USB_DEVICE(0x148f, 0x3572) }, 1182 { USB_DEVICE(0x148f, 0x3572) },
1181 /* Sitecom */ 1183 /* Sitecom */
@@ -1199,6 +1201,8 @@ static struct usb_device_id rt2800usb_device_table[] = {
1199 { USB_DEVICE(0x050d, 0x1103) }, 1201 { USB_DEVICE(0x050d, 0x1103) },
1200 /* Cameo */ 1202 /* Cameo */
1201 { USB_DEVICE(0x148f, 0xf301) }, 1203 { USB_DEVICE(0x148f, 0xf301) },
1204 /* D-Link */
1205 { USB_DEVICE(0x2001, 0x3c1f) },
1202 /* Edimax */ 1206 /* Edimax */
1203 { USB_DEVICE(0x7392, 0x7733) }, 1207 { USB_DEVICE(0x7392, 0x7733) },
1204 /* Hawking */ 1208 /* Hawking */
@@ -1212,6 +1216,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
1212 { USB_DEVICE(0x0789, 0x016b) }, 1216 { USB_DEVICE(0x0789, 0x016b) },
1213 /* NETGEAR */ 1217 /* NETGEAR */
1214 { USB_DEVICE(0x0846, 0x9012) }, 1218 { USB_DEVICE(0x0846, 0x9012) },
1219 { USB_DEVICE(0x0846, 0x9013) },
1215 { USB_DEVICE(0x0846, 0x9019) }, 1220 { USB_DEVICE(0x0846, 0x9019) },
1216 /* Planex */ 1221 /* Planex */
1217 { USB_DEVICE(0x2019, 0xed19) }, 1222 { USB_DEVICE(0x2019, 0xed19) },
@@ -1220,6 +1225,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
1220 /* Sitecom */ 1225 /* Sitecom */
1221 { USB_DEVICE(0x0df6, 0x0067) }, 1226 { USB_DEVICE(0x0df6, 0x0067) },
1222 { USB_DEVICE(0x0df6, 0x006a) }, 1227 { USB_DEVICE(0x0df6, 0x006a) },
1228 { USB_DEVICE(0x0df6, 0x006e) },
1223 /* ZyXEL */ 1229 /* ZyXEL */
1224 { USB_DEVICE(0x0586, 0x3421) }, 1230 { USB_DEVICE(0x0586, 0x3421) },
1225#endif 1231#endif
@@ -1236,6 +1242,9 @@ static struct usb_device_id rt2800usb_device_table[] = {
1236 { USB_DEVICE(0x2001, 0x3c1c) }, 1242 { USB_DEVICE(0x2001, 0x3c1c) },
1237 { USB_DEVICE(0x2001, 0x3c1d) }, 1243 { USB_DEVICE(0x2001, 0x3c1d) },
1238 { USB_DEVICE(0x2001, 0x3c1e) }, 1244 { USB_DEVICE(0x2001, 0x3c1e) },
1245 { USB_DEVICE(0x2001, 0x3c20) },
1246 { USB_DEVICE(0x2001, 0x3c22) },
1247 { USB_DEVICE(0x2001, 0x3c23) },
1239 /* LG innotek */ 1248 /* LG innotek */
1240 { USB_DEVICE(0x043e, 0x7a22) }, 1249 { USB_DEVICE(0x043e, 0x7a22) },
1241 { USB_DEVICE(0x043e, 0x7a42) }, 1250 { USB_DEVICE(0x043e, 0x7a42) },
@@ -1258,12 +1267,17 @@ static struct usb_device_id rt2800usb_device_table[] = {
1258 { USB_DEVICE(0x043e, 0x7a32) }, 1267 { USB_DEVICE(0x043e, 0x7a32) },
1259 /* AVM GmbH */ 1268 /* AVM GmbH */
1260 { USB_DEVICE(0x057c, 0x8501) }, 1269 { USB_DEVICE(0x057c, 0x8501) },
1261 /* D-Link DWA-160-B2 */ 1270 /* Buffalo */
1271 { USB_DEVICE(0x0411, 0x0241) },
1272 /* D-Link */
1262 { USB_DEVICE(0x2001, 0x3c1a) }, 1273 { USB_DEVICE(0x2001, 0x3c1a) },
1274 { USB_DEVICE(0x2001, 0x3c21) },
1263 /* Proware */ 1275 /* Proware */
1264 { USB_DEVICE(0x043e, 0x7a13) }, 1276 { USB_DEVICE(0x043e, 0x7a13) },
1265 /* Ralink */ 1277 /* Ralink */
1266 { USB_DEVICE(0x148f, 0x5572) }, 1278 { USB_DEVICE(0x148f, 0x5572) },
1279 /* TRENDnet */
1280 { USB_DEVICE(0x20f4, 0x724a) },
1267#endif 1281#endif
1268#ifdef CONFIG_RT2800USB_UNKNOWN 1282#ifdef CONFIG_RT2800USB_UNKNOWN
1269 /* 1283 /*
@@ -1333,6 +1347,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
1333 { USB_DEVICE(0x1d4d, 0x0010) }, 1347 { USB_DEVICE(0x1d4d, 0x0010) },
1334 /* Planex */ 1348 /* Planex */
1335 { USB_DEVICE(0x2019, 0xab24) }, 1349 { USB_DEVICE(0x2019, 0xab24) },
1350 { USB_DEVICE(0x2019, 0xab29) },
1336 /* Qcom */ 1351 /* Qcom */
1337 { USB_DEVICE(0x18e8, 0x6259) }, 1352 { USB_DEVICE(0x18e8, 0x6259) },
1338 /* RadioShack */ 1353 /* RadioShack */