aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800lib.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c55
1 files changed, 43 insertions, 12 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 65045e0236fc..419ea05f13a3 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1826,11 +1826,25 @@ static void rt2800_config_lna_gain(struct rt2x00_dev *rt2x00dev,
1826 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); 1826 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom);
1827 lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0); 1827 lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0);
1828 } else if (libconf->rf.channel <= 128) { 1828 } else if (libconf->rf.channel <= 128) {
1829 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom); 1829 if (rt2x00_rt(rt2x00dev, RT3593)) {
1830 lna_gain = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG2_LNA_A1); 1830 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom);
1831 lna_gain = rt2x00_get_field16(eeprom,
1832 EEPROM_EXT_LNA2_A1);
1833 } else {
1834 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom);
1835 lna_gain = rt2x00_get_field16(eeprom,
1836 EEPROM_RSSI_BG2_LNA_A1);
1837 }
1831 } else { 1838 } else {
1832 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom); 1839 if (rt2x00_rt(rt2x00dev, RT3593)) {
1833 lna_gain = rt2x00_get_field16(eeprom, EEPROM_RSSI_A2_LNA_A2); 1840 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom);
1841 lna_gain = rt2x00_get_field16(eeprom,
1842 EEPROM_EXT_LNA2_A2);
1843 } else {
1844 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom);
1845 lna_gain = rt2x00_get_field16(eeprom,
1846 EEPROM_RSSI_A2_LNA_A2);
1847 }
1834 } 1848 }
1835 1849
1836 rt2x00dev->lna_gain = lna_gain; 1850 rt2x00dev->lna_gain = lna_gain;
@@ -6488,10 +6502,12 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
6488 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word); 6502 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word);
6489 if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10) 6503 if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
6490 rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0); 6504 rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
6491 if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 || 6505 if (!rt2x00_rt(rt2x00dev, RT3593)) {
6492 rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff) 6506 if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 ||
6493 rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1, 6507 rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff)
6494 default_lna_gain); 6508 rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1,
6509 default_lna_gain);
6510 }
6495 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG2, word); 6511 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG2, word);
6496 6512
6497 drv_data->txmixer_gain_5g = rt2800_get_txmixer_gain_5g(rt2x00dev); 6513 drv_data->txmixer_gain_5g = rt2800_get_txmixer_gain_5g(rt2x00dev);
@@ -6506,12 +6522,27 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
6506 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word); 6522 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word);
6507 if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10) 6523 if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
6508 rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0); 6524 rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
6509 if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 || 6525 if (!rt2x00_rt(rt2x00dev, RT3593)) {
6510 rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff) 6526 if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 ||
6511 rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2, 6527 rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff)
6512 default_lna_gain); 6528 rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2,
6529 default_lna_gain);
6530 }
6513 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word); 6531 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
6514 6532
6533 if (rt2x00_rt(rt2x00dev, RT3593)) {
6534 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word);
6535 if (rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0x00 ||
6536 rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0xff)
6537 rt2x00_set_field16(&word, EEPROM_EXT_LNA2_A1,
6538 default_lna_gain);
6539 if (rt2x00_get_field16(word, EEPROM_EXT_LNA2_A2) == 0x00 ||
6540 rt2x00_get_field16(word, EEPROM_EXT_LNA2_A2) == 0xff)
6541 rt2x00_set_field16(&word, EEPROM_EXT_LNA2_A1,
6542 default_lna_gain);
6543 rt2800_eeprom_write(rt2x00dev, EEPROM_EXT_LNA2, word);
6544 }
6545
6515 return 0; 6546 return 0;
6516} 6547}
6517 6548