Lines Matching refs:ah
23 static int ath9k_hw_ar9287_get_eeprom_ver(struct ath_hw *ah) in ath9k_hw_ar9287_get_eeprom_ver() argument
25 return (ah->eeprom.map9287.baseEepHeader.version >> 12) & 0xF; in ath9k_hw_ar9287_get_eeprom_ver()
28 static int ath9k_hw_ar9287_get_eeprom_rev(struct ath_hw *ah) in ath9k_hw_ar9287_get_eeprom_rev() argument
30 return (ah->eeprom.map9287.baseEepHeader.version) & 0xFFF; in ath9k_hw_ar9287_get_eeprom_rev()
33 static bool __ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah) in __ath9k_hw_ar9287_fill_eeprom() argument
35 struct ar9287_eeprom *eep = &ah->eeprom.map9287; in __ath9k_hw_ar9287_fill_eeprom()
41 if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) in __ath9k_hw_ar9287_fill_eeprom()
49 static bool __ath9k_hw_usb_ar9287_fill_eeprom(struct ath_hw *ah) in __ath9k_hw_usb_ar9287_fill_eeprom() argument
51 u16 *eep_data = (u16 *)&ah->eeprom.map9287; in __ath9k_hw_usb_ar9287_fill_eeprom()
53 ath9k_hw_usb_gen_fill_eeprom(ah, eep_data, in __ath9k_hw_usb_ar9287_fill_eeprom()
59 static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah) in ath9k_hw_ar9287_fill_eeprom() argument
61 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_ar9287_fill_eeprom()
63 if (!ath9k_hw_use_flash(ah)) { in ath9k_hw_ar9287_fill_eeprom()
68 return __ath9k_hw_usb_ar9287_fill_eeprom(ah); in ath9k_hw_ar9287_fill_eeprom()
70 return __ath9k_hw_ar9287_fill_eeprom(ah); in ath9k_hw_ar9287_fill_eeprom()
121 static u32 ath9k_hw_ar9287_dump_eeprom(struct ath_hw *ah, bool dump_base_hdr, in ath9k_hw_ar9287_dump_eeprom() argument
124 struct ar9287_eeprom *eep = &ah->eeprom.map9287; in ath9k_hw_ar9287_dump_eeprom()
170 static u32 ath9k_hw_ar9287_dump_eeprom(struct ath_hw *ah, bool dump_base_hdr, in ath9k_hw_ar9287_dump_eeprom() argument
178 static int ath9k_hw_ar9287_check_eeprom(struct ath_hw *ah) in ath9k_hw_ar9287_check_eeprom() argument
184 struct ar9287_eeprom *eep = &ah->eeprom.map9287; in ath9k_hw_ar9287_check_eeprom()
185 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_ar9287_check_eeprom()
187 if (!ath9k_hw_use_flash(ah)) { in ath9k_hw_ar9287_check_eeprom()
188 if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, in ath9k_hw_ar9287_check_eeprom()
201 eepdata = (u16 *)(&ah->eeprom); in ath9k_hw_ar9287_check_eeprom()
220 el = swab16(ah->eeprom.map9287.baseEepHeader.length); in ath9k_hw_ar9287_check_eeprom()
222 el = ah->eeprom.map9287.baseEepHeader.length; in ath9k_hw_ar9287_check_eeprom()
229 eepdata = (u16 *)(&ah->eeprom); in ath9k_hw_ar9287_check_eeprom()
273 if (sum != 0xffff || ah->eep_ops->get_eeprom_ver(ah) != AR9287_EEP_VER in ath9k_hw_ar9287_check_eeprom()
274 || ah->eep_ops->get_eeprom_rev(ah) < AR5416_EEP_NO_BACK_VER) { in ath9k_hw_ar9287_check_eeprom()
276 sum, ah->eep_ops->get_eeprom_ver(ah)); in ath9k_hw_ar9287_check_eeprom()
283 static u32 ath9k_hw_ar9287_get_eeprom(struct ath_hw *ah, in ath9k_hw_ar9287_get_eeprom() argument
286 struct ar9287_eeprom *eep = &ah->eeprom.map9287; in ath9k_hw_ar9287_get_eeprom()
338 static void ar9287_eeprom_get_tx_gain_index(struct ath_hw *ah, in ar9287_eeprom_get_tx_gain_index() argument
347 ath9k_hw_get_channel_centers(ah, chan, ¢ers); in ar9287_eeprom_get_tx_gain_index()
367 static void ar9287_eeprom_olpc_set_pdadcs(struct ath_hw *ah, in ar9287_eeprom_olpc_set_pdadcs() argument
375 tmpVal = REG_READ(ah, 0xa270); in ar9287_eeprom_olpc_set_pdadcs()
378 REG_WRITE(ah, 0xa270, tmpVal); in ar9287_eeprom_olpc_set_pdadcs()
382 tmpVal = REG_READ(ah, 0xb270); in ar9287_eeprom_olpc_set_pdadcs()
385 REG_WRITE(ah, 0xb270, tmpVal); in ar9287_eeprom_olpc_set_pdadcs()
390 tmpVal = REG_READ(ah, 0xa398); in ar9287_eeprom_olpc_set_pdadcs()
394 REG_WRITE(ah, 0xa398, tmpVal); in ar9287_eeprom_olpc_set_pdadcs()
400 tmpVal = REG_READ(ah, 0xb398); in ar9287_eeprom_olpc_set_pdadcs()
404 REG_WRITE(ah, 0xb398, tmpVal); in ar9287_eeprom_olpc_set_pdadcs()
408 static void ath9k_hw_set_ar9287_power_cal_table(struct ath_hw *ah, in ath9k_hw_set_ar9287_power_cal_table() argument
422 struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; in ath9k_hw_set_ar9287_power_cal_table()
430 pdGainOverlap_t2 = (u16)(MS(REG_READ(ah, AR_PHY_TPCRG5), in ath9k_hw_set_ar9287_power_cal_table()
436 if (ath9k_hw_ar9287_get_eeprom(ah, EEP_OL_PWRCTRL)) { in ath9k_hw_set_ar9287_power_cal_table()
439 ah->initPDADC = pRawDatasetOpenLoop->vpdPdg[0][0]; in ath9k_hw_set_ar9287_power_cal_table()
456 REG_RMW_FIELD(ah, AR_PHY_TPCRG1, AR_PHY_TPCRG1_NUM_PD_GAIN, in ath9k_hw_set_ar9287_power_cal_table()
458 REG_RMW_FIELD(ah, AR_PHY_TPCRG1, AR_PHY_TPCRG1_PD_GAIN_1, in ath9k_hw_set_ar9287_power_cal_table()
460 REG_RMW_FIELD(ah, AR_PHY_TPCRG1, AR_PHY_TPCRG1_PD_GAIN_2, in ath9k_hw_set_ar9287_power_cal_table()
462 REG_RMW_FIELD(ah, AR_PHY_TPCRG1, AR_PHY_TPCRG1_PD_GAIN_3, in ath9k_hw_set_ar9287_power_cal_table()
472 if (ath9k_hw_ar9287_get_eeprom(ah, EEP_OL_PWRCTRL)) { in ath9k_hw_set_ar9287_power_cal_table()
474 ar9287_eeprom_get_tx_gain_index(ah, chan, in ath9k_hw_set_ar9287_power_cal_table()
478 ar9287_eeprom_olpc_set_pdadcs(ah, txPower, i); in ath9k_hw_set_ar9287_power_cal_table()
484 ath9k_hw_get_gain_boundaries_pdadcs(ah, chan, in ath9k_hw_set_ar9287_power_cal_table()
493 ENABLE_REGWRITE_BUFFER(ah); in ath9k_hw_set_ar9287_power_cal_table()
496 if (!ath9k_hw_ar9287_get_eeprom(ah, in ath9k_hw_set_ar9287_power_cal_table()
510 REG_WRITE(ah, in ath9k_hw_set_ar9287_power_cal_table()
531 if (!ath9k_hw_ar9287_get_eeprom(ah, EEP_OL_PWRCTRL)) { in ath9k_hw_set_ar9287_power_cal_table()
538 REG_WRITE(ah, regOffset, reg32); in ath9k_hw_set_ar9287_power_cal_table()
542 REGWRITE_BUFFER_FLUSH(ah); in ath9k_hw_set_ar9287_power_cal_table()
547 static void ath9k_hw_set_ar9287_power_per_rate_table(struct ath_hw *ah, in ath9k_hw_set_ar9287_power_per_rate_table() argument
582 struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; in ath9k_hw_set_ar9287_power_per_rate_table()
583 tx_chainmask = ah->txchainmask; in ath9k_hw_set_ar9287_power_per_rate_table()
585 ath9k_hw_get_channel_centers(ah, chan, ¢ers); in ath9k_hw_set_ar9287_power_per_rate_table()
586 scaledPower = ath9k_hw_get_scaled_power(ah, powerLimit, in ath9k_hw_set_ar9287_power_per_rate_table()
599 ath9k_hw_get_legacy_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
603 ath9k_hw_get_legacy_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
607 ath9k_hw_get_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
615 ath9k_hw_get_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
619 ath9k_hw_get_legacy_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
623 ath9k_hw_get_legacy_target_powers(ah, chan, in ath9k_hw_set_ar9287_power_per_rate_table()
762 static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah, in ath9k_hw_ar9287_set_txpower() argument
767 struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah); in ath9k_hw_ar9287_set_txpower()
768 struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; in ath9k_hw_ar9287_set_txpower()
780 ath9k_hw_set_ar9287_power_per_rate_table(ah, chan, in ath9k_hw_ar9287_set_txpower()
785 ath9k_hw_set_ar9287_power_cal_table(ah, chan); in ath9k_hw_ar9287_set_txpower()
796 ath9k_hw_update_regulatory_maxpower(ah); in ath9k_hw_ar9287_set_txpower()
804 ENABLE_REGWRITE_BUFFER(ah); in ath9k_hw_ar9287_set_txpower()
807 REG_WRITE(ah, AR_PHY_POWER_TX_RATE1, in ath9k_hw_ar9287_set_txpower()
813 REG_WRITE(ah, AR_PHY_POWER_TX_RATE2, in ath9k_hw_ar9287_set_txpower()
821 REG_WRITE(ah, AR_PHY_POWER_TX_RATE3, in ath9k_hw_ar9287_set_txpower()
826 REG_WRITE(ah, AR_PHY_POWER_TX_RATE4, in ath9k_hw_ar9287_set_txpower()
834 REG_WRITE(ah, AR_PHY_POWER_TX_RATE5, in ath9k_hw_ar9287_set_txpower()
840 REG_WRITE(ah, AR_PHY_POWER_TX_RATE6, in ath9k_hw_ar9287_set_txpower()
848 if (ath9k_hw_ar9287_get_eeprom(ah, EEP_OL_PWRCTRL)) { in ath9k_hw_ar9287_set_txpower()
849 REG_WRITE(ah, AR_PHY_POWER_TX_RATE7, in ath9k_hw_ar9287_set_txpower()
855 REG_WRITE(ah, AR_PHY_POWER_TX_RATE8, in ath9k_hw_ar9287_set_txpower()
861 REG_WRITE(ah, AR_PHY_POWER_TX_RATE7, in ath9k_hw_ar9287_set_txpower()
871 REG_WRITE(ah, AR_PHY_POWER_TX_RATE8, in ath9k_hw_ar9287_set_txpower()
883 REG_WRITE(ah, AR_PHY_POWER_TX_RATE9, in ath9k_hw_ar9287_set_txpower()
891 if (ah->tpc_enabled) { in ath9k_hw_ar9287_set_txpower()
895 ar5008_hw_init_rate_txpower(ah, ratesArray, chan, ht40_delta); in ath9k_hw_ar9287_set_txpower()
897 REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, in ath9k_hw_ar9287_set_txpower()
901 REG_WRITE(ah, AR_PHY_POWER_TX_RATE_MAX, MAX_RATE_POWER); in ath9k_hw_ar9287_set_txpower()
904 REGWRITE_BUFFER_FLUSH(ah); in ath9k_hw_ar9287_set_txpower()
907 static void ath9k_hw_ar9287_set_board_values(struct ath_hw *ah, in ath9k_hw_ar9287_set_board_values() argument
910 struct ar9287_eeprom *eep = &ah->eeprom.map9287; in ath9k_hw_ar9287_set_board_values()
918 REG_WRITE(ah, AR_PHY_SWITCH_COM, pModal->antCtrlCommon); in ath9k_hw_ar9287_set_board_values()
923 REG_WRITE(ah, AR_PHY_SWITCH_CHAIN_0 + regChainOffset, in ath9k_hw_ar9287_set_board_values()
926 REG_WRITE(ah, AR_PHY_TIMING_CTRL4(0) + regChainOffset, in ath9k_hw_ar9287_set_board_values()
927 (REG_READ(ah, AR_PHY_TIMING_CTRL4(0) + regChainOffset) in ath9k_hw_ar9287_set_board_values()
937 REG_RMW_FIELD(ah, AR_PHY_GAIN_2GHZ + regChainOffset, in ath9k_hw_ar9287_set_board_values()
940 REG_RMW_FIELD(ah, AR_PHY_GAIN_2GHZ + regChainOffset, in ath9k_hw_ar9287_set_board_values()
943 REG_RMW_FIELD(ah, AR_PHY_RXGAIN + regChainOffset, in ath9k_hw_ar9287_set_board_values()
946 REG_RMW_FIELD(ah, AR_PHY_RXGAIN + regChainOffset, in ath9k_hw_ar9287_set_board_values()
953 REG_RMW_FIELD(ah, AR_PHY_SETTLING, in ath9k_hw_ar9287_set_board_values()
956 REG_RMW_FIELD(ah, AR_PHY_SETTLING, in ath9k_hw_ar9287_set_board_values()
959 REG_RMW_FIELD(ah, AR_PHY_DESIRED_SZ, in ath9k_hw_ar9287_set_board_values()
962 REG_WRITE(ah, AR_PHY_RF_CTL4, in ath9k_hw_ar9287_set_board_values()
968 REG_RMW_FIELD(ah, AR_PHY_RF_CTL3, in ath9k_hw_ar9287_set_board_values()
971 REG_RMW_FIELD(ah, AR_PHY_CCA, in ath9k_hw_ar9287_set_board_values()
973 REG_RMW_FIELD(ah, AR_PHY_EXT_CCA0, in ath9k_hw_ar9287_set_board_values()
976 regval = REG_READ(ah, AR9287_AN_RF2G3_CH0); in ath9k_hw_ar9287_set_board_values()
990 ath9k_hw_analog_shift_regwrite(ah, AR9287_AN_RF2G3_CH0, regval); in ath9k_hw_ar9287_set_board_values()
992 regval = REG_READ(ah, AR9287_AN_RF2G3_CH1); in ath9k_hw_ar9287_set_board_values()
1006 ath9k_hw_analog_shift_regwrite(ah, AR9287_AN_RF2G3_CH1, regval); in ath9k_hw_ar9287_set_board_values()
1008 REG_RMW_FIELD(ah, AR_PHY_RF_CTL2, in ath9k_hw_ar9287_set_board_values()
1010 REG_RMW_FIELD(ah, AR_PHY_RF_CTL2, in ath9k_hw_ar9287_set_board_values()
1013 ath9k_hw_analog_shift_rmw(ah, AR9287_AN_TOP2, in ath9k_hw_ar9287_set_board_values()
1019 static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah, in ath9k_hw_ar9287_get_spur_channel() argument
1022 return ah->eeprom.map9287.modalHeader.spurChans[i].spurChan; in ath9k_hw_ar9287_get_spur_channel()