diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/eeprom_9287.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_9287.c | 89 |
1 files changed, 48 insertions, 41 deletions
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c index c6a4325019d5..6ffe85de75c1 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c | |||
@@ -15,6 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include "ath9k.h" | 17 | #include "ath9k.h" |
18 | #include "hw.h" | ||
18 | 19 | ||
19 | static int ath9k_hw_AR9287_get_eeprom_ver(struct ath_hw *ah) | 20 | static int ath9k_hw_AR9287_get_eeprom_ver(struct ath_hw *ah) |
20 | { | 21 | { |
@@ -29,20 +30,21 @@ static int ath9k_hw_AR9287_get_eeprom_rev(struct ath_hw *ah) | |||
29 | static bool ath9k_hw_AR9287_fill_eeprom(struct ath_hw *ah) | 30 | static bool ath9k_hw_AR9287_fill_eeprom(struct ath_hw *ah) |
30 | { | 31 | { |
31 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; | 32 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; |
33 | struct ath_common *common = ath9k_hw_common(ah); | ||
32 | u16 *eep_data; | 34 | u16 *eep_data; |
33 | int addr, eep_start_loc = AR9287_EEP_START_LOC; | 35 | int addr, eep_start_loc = AR9287_EEP_START_LOC; |
34 | eep_data = (u16 *)eep; | 36 | eep_data = (u16 *)eep; |
35 | 37 | ||
36 | if (!ath9k_hw_use_flash(ah)) { | 38 | if (!ath9k_hw_use_flash(ah)) { |
37 | DPRINTF(ah, ATH_DBG_EEPROM, | 39 | ath_print(common, ATH_DBG_EEPROM, |
38 | "Reading from EEPROM, not flash\n"); | 40 | "Reading from EEPROM, not flash\n"); |
39 | } | 41 | } |
40 | 42 | ||
41 | for (addr = 0; addr < sizeof(struct ar9287_eeprom) / sizeof(u16); | 43 | for (addr = 0; addr < sizeof(struct ar9287_eeprom) / sizeof(u16); |
42 | addr++) { | 44 | addr++) { |
43 | if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) { | 45 | if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) { |
44 | DPRINTF(ah, ATH_DBG_EEPROM, | 46 | ath_print(common, ATH_DBG_EEPROM, |
45 | "Unable to read eeprom region \n"); | 47 | "Unable to read eeprom region \n"); |
46 | return false; | 48 | return false; |
47 | } | 49 | } |
48 | eep_data++; | 50 | eep_data++; |
@@ -57,17 +59,18 @@ static int ath9k_hw_AR9287_check_eeprom(struct ath_hw *ah) | |||
57 | int i, addr; | 59 | int i, addr; |
58 | bool need_swap = false; | 60 | bool need_swap = false; |
59 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; | 61 | struct ar9287_eeprom *eep = &ah->eeprom.map9287; |
62 | struct ath_common *common = ath9k_hw_common(ah); | ||
60 | 63 | ||
61 | if (!ath9k_hw_use_flash(ah)) { | 64 | if (!ath9k_hw_use_flash(ah)) { |
62 | if (!ath9k_hw_nvram_read | 65 | if (!ath9k_hw_nvram_read |
63 | (ah, AR5416_EEPROM_MAGIC_OFFSET, &magic)) { | 66 | (ah, AR5416_EEPROM_MAGIC_OFFSET, &magic)) { |
64 | DPRINTF(ah, ATH_DBG_FATAL, | 67 | ath_print(common, ATH_DBG_FATAL, |
65 | "Reading Magic # failed\n"); | 68 | "Reading Magic # failed\n"); |
66 | return false; | 69 | return false; |
67 | } | 70 | } |
68 | 71 | ||
69 | DPRINTF(ah, ATH_DBG_EEPROM, | 72 | ath_print(common, ATH_DBG_EEPROM, |
70 | "Read Magic = 0x%04X\n", magic); | 73 | "Read Magic = 0x%04X\n", magic); |
71 | if (magic != AR5416_EEPROM_MAGIC) { | 74 | if (magic != AR5416_EEPROM_MAGIC) { |
72 | magic2 = swab16(magic); | 75 | magic2 = swab16(magic); |
73 | 76 | ||
@@ -83,15 +86,15 @@ static int ath9k_hw_AR9287_check_eeprom(struct ath_hw *ah) | |||
83 | eepdata++; | 86 | eepdata++; |
84 | } | 87 | } |
85 | } else { | 88 | } else { |
86 | DPRINTF(ah, ATH_DBG_FATAL, | 89 | ath_print(common, ATH_DBG_FATAL, |
87 | "Invalid EEPROM Magic. " | 90 | "Invalid EEPROM Magic. " |
88 | "endianness mismatch.\n"); | 91 | "endianness mismatch.\n"); |
89 | return -EINVAL; | 92 | return -EINVAL; |
90 | } | 93 | } |
91 | } | 94 | } |
92 | } | 95 | } |
93 | DPRINTF(ah, ATH_DBG_EEPROM, "need_swap = %s.\n", need_swap ? | 96 | ath_print(common, ATH_DBG_EEPROM, "need_swap = %s.\n", need_swap ? |
94 | "True" : "False"); | 97 | "True" : "False"); |
95 | 98 | ||
96 | if (need_swap) | 99 | if (need_swap) |
97 | el = swab16(ah->eeprom.map9287.baseEepHeader.length); | 100 | el = swab16(ah->eeprom.map9287.baseEepHeader.length); |
@@ -148,9 +151,9 @@ static int ath9k_hw_AR9287_check_eeprom(struct ath_hw *ah) | |||
148 | 151 | ||
149 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR9287_EEP_VER | 152 | if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR9287_EEP_VER |
150 | || ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { | 153 | || ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { |
151 | DPRINTF(ah, ATH_DBG_FATAL, | 154 | ath_print(common, ATH_DBG_FATAL, |
152 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", | 155 | "Bad EEPROM checksum 0x%x or revision 0x%04x\n", |
153 | sum, ah->eep_ops->get_eeprom_ver(ah)); | 156 | sum, ah->eep_ops->get_eeprom_ver(ah)); |
154 | return -EINVAL; | 157 | return -EINVAL; |
155 | } | 158 | } |
156 | 159 | ||
@@ -436,6 +439,7 @@ static void ath9k_hw_set_AR9287_power_cal_table(struct ath_hw *ah, | |||
436 | struct ath9k_channel *chan, | 439 | struct ath9k_channel *chan, |
437 | int16_t *pTxPowerIndexOffset) | 440 | int16_t *pTxPowerIndexOffset) |
438 | { | 441 | { |
442 | struct ath_common *common = ath9k_hw_common(ah); | ||
439 | struct cal_data_per_freq_ar9287 *pRawDataset; | 443 | struct cal_data_per_freq_ar9287 *pRawDataset; |
440 | struct cal_data_op_loop_ar9287 *pRawDatasetOpenLoop; | 444 | struct cal_data_op_loop_ar9287 *pRawDatasetOpenLoop; |
441 | u8 *pCalBChans = NULL; | 445 | u8 *pCalBChans = NULL; |
@@ -564,24 +568,25 @@ static void ath9k_hw_set_AR9287_power_cal_table(struct ath_hw *ah, | |||
564 | & 0xFF) << 24) ; | 568 | & 0xFF) << 24) ; |
565 | REG_WRITE(ah, regOffset, reg32); | 569 | REG_WRITE(ah, regOffset, reg32); |
566 | 570 | ||
567 | DPRINTF(ah, ATH_DBG_EEPROM, | 571 | ath_print(common, ATH_DBG_EEPROM, |
568 | "PDADC (%d,%4x): %4.4x %8.8x\n", | 572 | "PDADC (%d,%4x): %4.4x " |
569 | i, regChainOffset, regOffset, | 573 | "%8.8x\n", |
570 | reg32); | 574 | i, regChainOffset, regOffset, |
571 | 575 | reg32); | |
572 | DPRINTF(ah, ATH_DBG_EEPROM, | 576 | |
573 | "PDADC: Chain %d | " | 577 | ath_print(common, ATH_DBG_EEPROM, |
574 | "PDADC %3d Value %3d | " | 578 | "PDADC: Chain %d | " |
575 | "PDADC %3d Value %3d | " | 579 | "PDADC %3d Value %3d | " |
576 | "PDADC %3d Value %3d | " | 580 | "PDADC %3d Value %3d | " |
577 | "PDADC %3d Value %3d |\n", | 581 | "PDADC %3d Value %3d | " |
578 | i, 4 * j, pdadcValues[4 * j], | 582 | "PDADC %3d Value %3d |\n", |
579 | 4 * j + 1, | 583 | i, 4 * j, pdadcValues[4 * j], |
580 | pdadcValues[4 * j + 1], | 584 | 4 * j + 1, |
581 | 4 * j + 2, | 585 | pdadcValues[4 * j + 1], |
582 | pdadcValues[4 * j + 2], | 586 | 4 * j + 2, |
583 | 4 * j + 3, | 587 | pdadcValues[4 * j + 2], |
584 | pdadcValues[4 * j + 3]); | 588 | 4 * j + 3, |
589 | pdadcValues[4 * j + 3]); | ||
585 | 590 | ||
586 | regOffset += 4; | 591 | regOffset += 4; |
587 | } | 592 | } |
@@ -831,6 +836,7 @@ static void ath9k_hw_AR9287_set_txpower(struct ath_hw *ah, | |||
831 | { | 836 | { |
832 | #define INCREASE_MAXPOW_BY_TWO_CHAIN 6 | 837 | #define INCREASE_MAXPOW_BY_TWO_CHAIN 6 |
833 | #define INCREASE_MAXPOW_BY_THREE_CHAIN 10 | 838 | #define INCREASE_MAXPOW_BY_THREE_CHAIN 10 |
839 | struct ath_common *common = ath9k_hw_common(ah); | ||
834 | struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah); | 840 | struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah); |
835 | struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; | 841 | struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; |
836 | struct modal_eep_ar9287_header *pModal = &pEepData->modalHeader; | 842 | struct modal_eep_ar9287_header *pModal = &pEepData->modalHeader; |
@@ -966,8 +972,8 @@ static void ath9k_hw_AR9287_set_txpower(struct ath_hw *ah, | |||
966 | INCREASE_MAXPOW_BY_THREE_CHAIN; | 972 | INCREASE_MAXPOW_BY_THREE_CHAIN; |
967 | break; | 973 | break; |
968 | default: | 974 | default: |
969 | DPRINTF(ah, ATH_DBG_EEPROM, | 975 | ath_print(common, ATH_DBG_EEPROM, |
970 | "Invalid chainmask configuration\n"); | 976 | "Invalid chainmask configuration\n"); |
971 | break; | 977 | break; |
972 | } | 978 | } |
973 | } | 979 | } |
@@ -1138,19 +1144,20 @@ static u16 ath9k_hw_AR9287_get_spur_channel(struct ath_hw *ah, | |||
1138 | { | 1144 | { |
1139 | #define EEP_MAP9287_SPURCHAN \ | 1145 | #define EEP_MAP9287_SPURCHAN \ |
1140 | (ah->eeprom.map9287.modalHeader.spurChans[i].spurChan) | 1146 | (ah->eeprom.map9287.modalHeader.spurChans[i].spurChan) |
1147 | struct ath_common *common = ath9k_hw_common(ah); | ||
1141 | u16 spur_val = AR_NO_SPUR; | 1148 | u16 spur_val = AR_NO_SPUR; |
1142 | 1149 | ||
1143 | DPRINTF(ah, ATH_DBG_ANI, | 1150 | ath_print(common, ATH_DBG_ANI, |
1144 | "Getting spur idx %d is2Ghz. %d val %x\n", | 1151 | "Getting spur idx %d is2Ghz. %d val %x\n", |
1145 | i, is2GHz, ah->config.spurchans[i][is2GHz]); | 1152 | i, is2GHz, ah->config.spurchans[i][is2GHz]); |
1146 | 1153 | ||
1147 | switch (ah->config.spurmode) { | 1154 | switch (ah->config.spurmode) { |
1148 | case SPUR_DISABLE: | 1155 | case SPUR_DISABLE: |
1149 | break; | 1156 | break; |
1150 | case SPUR_ENABLE_IOCTL: | 1157 | case SPUR_ENABLE_IOCTL: |
1151 | spur_val = ah->config.spurchans[i][is2GHz]; | 1158 | spur_val = ah->config.spurchans[i][is2GHz]; |
1152 | DPRINTF(ah, ATH_DBG_ANI, | 1159 | ath_print(common, ATH_DBG_ANI, |
1153 | "Getting spur val from new loc. %d\n", spur_val); | 1160 | "Getting spur val from new loc. %d\n", spur_val); |
1154 | break; | 1161 | break; |
1155 | case SPUR_ENABLE_EEPROM: | 1162 | case SPUR_ENABLE_EEPROM: |
1156 | spur_val = EEP_MAP9287_SPURCHAN; | 1163 | spur_val = EEP_MAP9287_SPURCHAN; |