aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-04-07 18:04:07 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-04-10 14:10:32 -0400
commit37c62fecbf4f850e194063fdfb02326c15ea7cf1 (patch)
tree77d5ca0787bf580bcdb3f43a92a712783ea381ad
parent6aea60b825728fb59e6fa1424174b1e26cb3fc51 (diff)
ath9k_hw: clean up RF Bank6 handling on AR5416/AR91xx
There are two sets of initvals for this RF bank, one with TPC support and one without. The TPC one always gets used, so remove the other one to avoid confusion. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar5008_phy.c31
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_hw.c11
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h3
3 files changed, 13 insertions, 32 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
index fd69376ecc83..93f8f9616516 100644
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
@@ -485,9 +485,7 @@ static int ar5008_hw_rf_alloc_ext_banks(struct ath_hw *ah)
485 ATH_ALLOC_BANK(ah->analogBank2Data, ah->iniBank2.ia_rows); 485 ATH_ALLOC_BANK(ah->analogBank2Data, ah->iniBank2.ia_rows);
486 ATH_ALLOC_BANK(ah->analogBank3Data, ah->iniBank3.ia_rows); 486 ATH_ALLOC_BANK(ah->analogBank3Data, ah->iniBank3.ia_rows);
487 ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows); 487 ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows);
488 ATH_ALLOC_BANK(ah->analogBank6TPCData, ah->iniBank6TPC.ia_rows);
489 ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows); 488 ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows);
490 ATH_ALLOC_BANK(ah->bank6Temp, ah->iniBank6.ia_rows);
491 489
492 return 0; 490 return 0;
493#undef ATH_ALLOC_BANK 491#undef ATH_ALLOC_BANK
@@ -517,6 +515,7 @@ static bool ar5008_hw_set_rf_regs(struct ath_hw *ah,
517 u32 ob5GHz = 0, db5GHz = 0; 515 u32 ob5GHz = 0, db5GHz = 0;
518 u32 ob2GHz = 0, db2GHz = 0; 516 u32 ob2GHz = 0, db2GHz = 0;
519 int regWrites = 0; 517 int regWrites = 0;
518 int i;
520 519
521 /* 520 /*
522 * Software does not need to program bank data 521 * Software does not need to program bank data
@@ -541,13 +540,9 @@ static bool ar5008_hw_set_rf_regs(struct ath_hw *ah,
541 /* Setup Bank 6 Write */ 540 /* Setup Bank 6 Write */
542 ar5008_rf_bank_setup(ah->analogBank3Data, &ah->iniBank3, 541 ar5008_rf_bank_setup(ah->analogBank3Data, &ah->iniBank3,
543 modesIndex); 542 modesIndex);
544 { 543
545 int i; 544 for (i = 0; i < ah->iniBank6.ia_rows; i++)
546 for (i = 0; i < ah->iniBank6TPC.ia_rows; i++) { 545 ah->analogBank6Data[i] = INI_RA(&ah->iniBank6, i, modesIndex);
547 ah->analogBank6Data[i] =
548 INI_RA(&ah->iniBank6TPC, i, modesIndex);
549 }
550 }
551 546
552 /* Only the 5 or 2 GHz OB/DB need to be set for a mode */ 547 /* Only the 5 or 2 GHz OB/DB need to be set for a mode */
553 if (eepMinorRev >= 2) { 548 if (eepMinorRev >= 2) {
@@ -572,18 +567,12 @@ static bool ar5008_hw_set_rf_regs(struct ath_hw *ah,
572 ar5008_rf_bank_setup(ah->analogBank7Data, &ah->iniBank7, 1); 567 ar5008_rf_bank_setup(ah->analogBank7Data, &ah->iniBank7, 1);
573 568
574 /* Write Analog registers */ 569 /* Write Analog registers */
575 REG_WRITE_RF_ARRAY(&ah->iniBank0, ah->analogBank0Data, 570 REG_WRITE_RF_ARRAY(&ah->iniBank0, ah->analogBank0Data, regWrites);
576 regWrites); 571 REG_WRITE_RF_ARRAY(&ah->iniBank1, ah->analogBank1Data, regWrites);
577 REG_WRITE_RF_ARRAY(&ah->iniBank1, ah->analogBank1Data, 572 REG_WRITE_RF_ARRAY(&ah->iniBank2, ah->analogBank2Data, regWrites);
578 regWrites); 573 REG_WRITE_RF_ARRAY(&ah->iniBank3, ah->analogBank3Data, regWrites);
579 REG_WRITE_RF_ARRAY(&ah->iniBank2, ah->analogBank2Data, 574 REG_WRITE_RF_ARRAY(&ah->iniBank6, ah->analogBank6Data, regWrites);
580 regWrites); 575 REG_WRITE_RF_ARRAY(&ah->iniBank7, ah->analogBank7Data, regWrites);
581 REG_WRITE_RF_ARRAY(&ah->iniBank3, ah->analogBank3Data,
582 regWrites);
583 REG_WRITE_RF_ARRAY(&ah->iniBank6TPC, ah->analogBank6Data,
584 regWrites);
585 REG_WRITE_RF_ARRAY(&ah->iniBank7, ah->analogBank7Data,
586 regWrites);
587 576
588 return true; 577 return true;
589} 578}
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
index f053d978540e..a4654d3b0c9a 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
@@ -67,12 +67,10 @@ static int ar9002_hw_init_mode_regs(struct ath_hw *ah)
67 } else if (AR_SREV_9100_OR_LATER(ah)) { 67 } else if (AR_SREV_9100_OR_LATER(ah)) {
68 INIT_INI_ARRAY(&ah->iniModes, ar5416Modes_9100); 68 INIT_INI_ARRAY(&ah->iniModes, ar5416Modes_9100);
69 INIT_INI_ARRAY(&ah->iniCommon, ar5416Common_9100); 69 INIT_INI_ARRAY(&ah->iniCommon, ar5416Common_9100);
70 INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6_9100);
71 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9100); 70 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9100);
72 } else { 71 } else {
73 INIT_INI_ARRAY(&ah->iniModes, ar5416Modes); 72 INIT_INI_ARRAY(&ah->iniModes, ar5416Modes);
74 INIT_INI_ARRAY(&ah->iniCommon, ar5416Common); 73 INIT_INI_ARRAY(&ah->iniCommon, ar5416Common);
75 INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC);
76 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac); 74 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac);
77 } 75 }
78 76
@@ -86,14 +84,11 @@ static int ar9002_hw_init_mode_regs(struct ath_hw *ah)
86 INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3); 84 INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3);
87 INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7); 85 INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7);
88 86
89 /* Common for AR5416, AR9160 */
90 if (!AR_SREV_9100(ah))
91 INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6);
92
93 /* Common for AR913x, AR9160 */ 87 /* Common for AR913x, AR9160 */
94 if (!AR_SREV_5416(ah)) 88 if (!AR_SREV_5416(ah))
95 INIT_INI_ARRAY(&ah->iniBank6TPC, 89 INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6TPC_9100);
96 ar5416Bank6TPC_9100); 90 else
91 INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6TPC);
97 } 92 }
98 93
99 /* iniAddac needs to be modified for these chips */ 94 /* iniAddac needs to be modified for these chips */
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 30e62d92d46d..e463c9ac4071 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -852,9 +852,7 @@ struct ath_hw {
852 u32 *analogBank2Data; 852 u32 *analogBank2Data;
853 u32 *analogBank3Data; 853 u32 *analogBank3Data;
854 u32 *analogBank6Data; 854 u32 *analogBank6Data;
855 u32 *analogBank6TPCData;
856 u32 *analogBank7Data; 855 u32 *analogBank7Data;
857 u32 *bank6Temp;
858 856
859 int coverage_class; 857 int coverage_class;
860 u32 slottime; 858 u32 slottime;
@@ -891,7 +889,6 @@ struct ath_hw {
891 struct ar5416IniArray iniBank2; 889 struct ar5416IniArray iniBank2;
892 struct ar5416IniArray iniBank3; 890 struct ar5416IniArray iniBank3;
893 struct ar5416IniArray iniBank6; 891 struct ar5416IniArray iniBank6;
894 struct ar5416IniArray iniBank6TPC;
895 struct ar5416IniArray iniBank7; 892 struct ar5416IniArray iniBank7;
896 struct ar5416IniArray iniAddac; 893 struct ar5416IniArray iniAddac;
897 struct ar5416IniArray iniPcieSerdes; 894 struct ar5416IniArray iniPcieSerdes;