Lines Matching refs:ah
64 static void ar5008_write_bank6(struct ath_hw *ah, unsigned int *writecnt) in ar5008_write_bank6() argument
66 struct ar5416IniArray *array = &ah->iniBank6; in ar5008_write_bank6()
67 u32 *data = ah->analogBank6Data; in ar5008_write_bank6()
70 ENABLE_REGWRITE_BUFFER(ah); in ar5008_write_bank6()
73 REG_WRITE(ah, INI_RA(array, r, 0), data[r]); in ar5008_write_bank6()
77 REGWRITE_BUFFER_FLUSH(ah); in ar5008_write_bank6()
144 static void ar5008_hw_force_bias(struct ath_hw *ah, u16 synth_freq) in ar5008_hw_force_bias() argument
146 struct ath_common *common = ath9k_hw_common(ah); in ar5008_hw_force_bias()
151 if (!AR_SREV_5416(ah) || synth_freq >= 3000) in ar5008_hw_force_bias()
154 BUG_ON(AR_SREV_9280_20_OR_LATER(ah)); in ar5008_hw_force_bias()
170 ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, tmp_reg, 3, 181, 3); in ar5008_hw_force_bias()
173 ar5008_write_bank6(ah, ®_writes); in ar5008_hw_force_bias()
185 static int ar5008_hw_set_channel(struct ath_hw *ah, struct ath9k_channel *chan) in ar5008_hw_set_channel() argument
187 struct ath_common *common = ath9k_hw_common(ah); in ar5008_hw_set_channel()
195 ath9k_hw_get_channel_centers(ah, chan, ¢ers); in ar5008_hw_set_channel()
215 txctl = REG_READ(ah, AR_PHY_CCK_TX_CTRL); in ar5008_hw_set_channel()
218 REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, in ar5008_hw_set_channel()
221 REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, in ar5008_hw_set_channel()
232 if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) in ar5008_hw_set_channel()
244 ar5008_hw_force_bias(ah, freq); in ar5008_hw_set_channel()
250 REG_WRITE(ah, AR_PHY(0x37), reg32); in ar5008_hw_set_channel()
252 ah->curchan = chan; in ar5008_hw_set_channel()
265 static void ar5008_hw_spur_mitigate(struct ath_hw *ah, in ar5008_hw_spur_mitigate() argument
297 cur_bb_spur = ah->eep_ops->get_spur_channel(ah, i, is2GHz); in ar5008_hw_spur_mitigate()
312 tmp = REG_READ(ah, AR_PHY_TIMING_CTRL4(0)); in ar5008_hw_spur_mitigate()
318 REG_WRITE(ah, AR_PHY_TIMING_CTRL4(0), new); in ar5008_hw_spur_mitigate()
325 REG_WRITE(ah, AR_PHY_SPUR_REG, new); in ar5008_hw_spur_mitigate()
336 REG_WRITE(ah, AR_PHY_TIMING11, new); in ar5008_hw_spur_mitigate()
354 REG_WRITE(ah, pilot_mask_reg[i], pilot_mask); in ar5008_hw_spur_mitigate()
355 REG_WRITE(ah, chan_mask_reg[i], chan_mask); in ar5008_hw_spur_mitigate()
388 REG_WRITE(ah, AR_PHY_BIN_MASK_1, tmp_mask); in ar5008_hw_spur_mitigate()
389 REG_WRITE(ah, AR_PHY_VIT_MASK2_M_46_61, tmp_mask); in ar5008_hw_spur_mitigate()
399 REG_WRITE(ah, AR_PHY_BIN_MASK_2, tmp_mask); in ar5008_hw_spur_mitigate()
400 REG_WRITE(ah, AR_PHY_MASK2_M_31_45, tmp_mask); in ar5008_hw_spur_mitigate()
410 REG_WRITE(ah, AR_PHY_BIN_MASK_3, tmp_mask); in ar5008_hw_spur_mitigate()
411 REG_WRITE(ah, AR_PHY_MASK2_M_16_30, tmp_mask); in ar5008_hw_spur_mitigate()
421 REG_WRITE(ah, AR_PHY_MASK_CTL, tmp_mask); in ar5008_hw_spur_mitigate()
422 REG_WRITE(ah, AR_PHY_MASK2_M_00_15, tmp_mask); in ar5008_hw_spur_mitigate()
432 REG_WRITE(ah, AR_PHY_BIN_MASK2_1, tmp_mask); in ar5008_hw_spur_mitigate()
433 REG_WRITE(ah, AR_PHY_MASK2_P_15_01, tmp_mask); in ar5008_hw_spur_mitigate()
443 REG_WRITE(ah, AR_PHY_BIN_MASK2_2, tmp_mask); in ar5008_hw_spur_mitigate()
444 REG_WRITE(ah, AR_PHY_MASK2_P_30_16, tmp_mask); in ar5008_hw_spur_mitigate()
454 REG_WRITE(ah, AR_PHY_BIN_MASK2_3, tmp_mask); in ar5008_hw_spur_mitigate()
455 REG_WRITE(ah, AR_PHY_MASK2_P_45_31, tmp_mask); in ar5008_hw_spur_mitigate()
465 REG_WRITE(ah, AR_PHY_BIN_MASK2_4, tmp_mask); in ar5008_hw_spur_mitigate()
466 REG_WRITE(ah, AR_PHY_MASK2_P_61_45, tmp_mask); in ar5008_hw_spur_mitigate()
475 static int ar5008_hw_rf_alloc_ext_banks(struct ath_hw *ah) in ar5008_hw_rf_alloc_ext_banks() argument
477 int size = ah->iniBank6.ia_rows * sizeof(u32); in ar5008_hw_rf_alloc_ext_banks()
479 if (AR_SREV_9280_20_OR_LATER(ah)) in ar5008_hw_rf_alloc_ext_banks()
482 ah->analogBank6Data = devm_kzalloc(ah->dev, size, GFP_KERNEL); in ar5008_hw_rf_alloc_ext_banks()
483 if (!ah->analogBank6Data) in ar5008_hw_rf_alloc_ext_banks()
502 static bool ar5008_hw_set_rf_regs(struct ath_hw *ah, in ar5008_hw_set_rf_regs() argument
517 if (AR_SREV_9280_20_OR_LATER(ah)) in ar5008_hw_set_rf_regs()
521 eepMinorRev = ah->eep_ops->get_eeprom(ah, EEP_MINOR_REV); in ar5008_hw_set_rf_regs()
523 for (i = 0; i < ah->iniBank6.ia_rows; i++) in ar5008_hw_set_rf_regs()
524 ah->analogBank6Data[i] = INI_RA(&ah->iniBank6, i, modesIndex); in ar5008_hw_set_rf_regs()
529 ob2GHz = ah->eep_ops->get_eeprom(ah, EEP_OB_2); in ar5008_hw_set_rf_regs()
530 db2GHz = ah->eep_ops->get_eeprom(ah, EEP_DB_2); in ar5008_hw_set_rf_regs()
531 ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, in ar5008_hw_set_rf_regs()
533 ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, in ar5008_hw_set_rf_regs()
536 ob5GHz = ah->eep_ops->get_eeprom(ah, EEP_OB_5); in ar5008_hw_set_rf_regs()
537 db5GHz = ah->eep_ops->get_eeprom(ah, EEP_DB_5); in ar5008_hw_set_rf_regs()
538 ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, in ar5008_hw_set_rf_regs()
540 ar5008_hw_phy_modify_rx_buffer(ah->analogBank6Data, in ar5008_hw_set_rf_regs()
550 ar5008_write_bank6(ah, ®Writes); in ar5008_hw_set_rf_regs()
556 static void ar5008_hw_init_bb(struct ath_hw *ah, in ar5008_hw_init_bb() argument
561 synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY; in ar5008_hw_init_bb()
563 REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN); in ar5008_hw_init_bb()
565 ath9k_hw_synth_delay(ah, chan, synthDelay); in ar5008_hw_init_bb()
568 static void ar5008_hw_init_chain_masks(struct ath_hw *ah) in ar5008_hw_init_chain_masks() argument
572 rx_chainmask = ah->rxchainmask; in ar5008_hw_init_chain_masks()
573 tx_chainmask = ah->txchainmask; in ar5008_hw_init_chain_masks()
578 REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, in ar5008_hw_init_chain_masks()
581 if (ah->hw_version.macVersion == AR_SREV_REVISION_5416_10) { in ar5008_hw_init_chain_masks()
582 REG_WRITE(ah, AR_PHY_RX_CHAINMASK, 0x7); in ar5008_hw_init_chain_masks()
583 REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, 0x7); in ar5008_hw_init_chain_masks()
589 ENABLE_REGWRITE_BUFFER(ah); in ar5008_hw_init_chain_masks()
590 REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx_chainmask); in ar5008_hw_init_chain_masks()
591 REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx_chainmask); in ar5008_hw_init_chain_masks()
594 ENABLE_REGWRITE_BUFFER(ah); in ar5008_hw_init_chain_masks()
598 REG_WRITE(ah, AR_SELFGEN_MASK, tx_chainmask); in ar5008_hw_init_chain_masks()
600 REGWRITE_BUFFER_FLUSH(ah); in ar5008_hw_init_chain_masks()
603 REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, in ar5008_hw_init_chain_masks()
606 if (AR_SREV_9100(ah)) in ar5008_hw_init_chain_masks()
607 REG_WRITE(ah, AR_PHY_ANALOG_SWAP, in ar5008_hw_init_chain_masks()
608 REG_READ(ah, AR_PHY_ANALOG_SWAP) | 0x00000001); in ar5008_hw_init_chain_masks()
611 static void ar5008_hw_override_ini(struct ath_hw *ah, in ar5008_hw_override_ini() argument
621 REG_SET_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); in ar5008_hw_override_ini()
623 if (AR_SREV_9280_20_OR_LATER(ah)) { in ar5008_hw_override_ini()
631 val = REG_READ(ah, AR_PCU_MISC_MODE2) & in ar5008_hw_override_ini()
634 if (!AR_SREV_9271(ah)) in ar5008_hw_override_ini()
637 if (AR_SREV_9287_11_OR_LATER(ah)) in ar5008_hw_override_ini()
642 REG_WRITE(ah, AR_PCU_MISC_MODE2, val); in ar5008_hw_override_ini()
645 if (AR_SREV_9280_20_OR_LATER(ah)) in ar5008_hw_override_ini()
651 REG_WRITE(ah, 0x9800 + (651 << 2), 0x11); in ar5008_hw_override_ini()
657 if (AR_SREV_9100(ah) || AR_SREV_9160(ah)) { in ar5008_hw_override_ini()
658 val = REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS); in ar5008_hw_override_ini()
660 REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val); in ar5008_hw_override_ini()
664 static void ar5008_hw_set_channel_regs(struct ath_hw *ah, in ar5008_hw_set_channel_regs() argument
670 if (AR_SREV_9285_12_OR_LATER(ah)) in ar5008_hw_set_channel_regs()
671 enableDacFifo = (REG_READ(ah, AR_PHY_TURBO) & in ar5008_hw_set_channel_regs()
684 ENABLE_REGWRITE_BUFFER(ah); in ar5008_hw_set_channel_regs()
685 REG_WRITE(ah, AR_PHY_TURBO, phymode); in ar5008_hw_set_channel_regs()
689 ath9k_hw_set11nmac2040(ah, chan); in ar5008_hw_set_channel_regs()
691 REG_WRITE(ah, AR_GTXTO, 25 << AR_GTXTO_TIMEOUT_LIMIT_S); in ar5008_hw_set_channel_regs()
692 REG_WRITE(ah, AR_CST, 0xF << AR_CST_TIMEOUT_LIMIT_S); in ar5008_hw_set_channel_regs()
694 REGWRITE_BUFFER_FLUSH(ah); in ar5008_hw_set_channel_regs()
698 static int ar5008_hw_process_ini(struct ath_hw *ah, in ar5008_hw_process_ini() argument
701 struct ath_common *common = ath9k_hw_common(ah); in ar5008_hw_process_ini()
717 REG_WRITE(ah, AR_PHY(0), 0x00000007); in ar5008_hw_process_ini()
720 REG_WRITE(ah, AR_PHY_ADC_SERIAL_CTL, AR_PHY_SEL_EXTERNAL_RADIO); in ar5008_hw_process_ini()
721 if (ah->eep_ops->set_addac) in ar5008_hw_process_ini()
722 ah->eep_ops->set_addac(ah, chan); in ar5008_hw_process_ini()
724 REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites); in ar5008_hw_process_ini()
725 REG_WRITE(ah, AR_PHY_ADC_SERIAL_CTL, AR_PHY_SEL_INTERNAL_ADDAC); in ar5008_hw_process_ini()
727 ENABLE_REGWRITE_BUFFER(ah); in ar5008_hw_process_ini()
729 for (i = 0; i < ah->iniModes.ia_rows; i++) { in ar5008_hw_process_ini()
730 u32 reg = INI_RA(&ah->iniModes, i, 0); in ar5008_hw_process_ini()
731 u32 val = INI_RA(&ah->iniModes, i, modesIndex); in ar5008_hw_process_ini()
733 if (reg == AR_AN_TOP2 && ah->need_an_top2_fixup) in ar5008_hw_process_ini()
736 REG_WRITE(ah, reg, val); in ar5008_hw_process_ini()
739 && ah->config.analog_shiftreg in ar5008_hw_process_ini()
747 REGWRITE_BUFFER_FLUSH(ah); in ar5008_hw_process_ini()
749 if (AR_SREV_9280(ah) || AR_SREV_9287_11_OR_LATER(ah)) in ar5008_hw_process_ini()
750 REG_WRITE_ARRAY(&ah->iniModesRxGain, modesIndex, regWrites); in ar5008_hw_process_ini()
752 if (AR_SREV_9280(ah) || AR_SREV_9285_12_OR_LATER(ah) || in ar5008_hw_process_ini()
753 AR_SREV_9287_11_OR_LATER(ah)) in ar5008_hw_process_ini()
754 REG_WRITE_ARRAY(&ah->iniModesTxGain, modesIndex, regWrites); in ar5008_hw_process_ini()
756 if (AR_SREV_9271_10(ah)) { in ar5008_hw_process_ini()
757 REG_SET_BIT(ah, AR_PHY_SPECTRAL_SCAN, AR_PHY_SPECTRAL_SCAN_ENA); in ar5008_hw_process_ini()
758 REG_RMW_FIELD(ah, AR_PHY_RF_CTL3, AR_PHY_TX_END_TO_ADC_ON, 0xa); in ar5008_hw_process_ini()
761 ENABLE_REGWRITE_BUFFER(ah); in ar5008_hw_process_ini()
764 for (i = 0; i < ah->iniCommon.ia_rows; i++) { in ar5008_hw_process_ini()
765 u32 reg = INI_RA(&ah->iniCommon, i, 0); in ar5008_hw_process_ini()
766 u32 val = INI_RA(&ah->iniCommon, i, 1); in ar5008_hw_process_ini()
768 REG_WRITE(ah, reg, val); in ar5008_hw_process_ini()
771 && ah->config.analog_shiftreg in ar5008_hw_process_ini()
779 REGWRITE_BUFFER_FLUSH(ah); in ar5008_hw_process_ini()
781 REG_WRITE_ARRAY(&ah->iniBB_RfGain, freqIndex, regWrites); in ar5008_hw_process_ini()
783 if (IS_CHAN_A_FAST_CLOCK(ah, chan)) in ar5008_hw_process_ini()
784 REG_WRITE_ARRAY(&ah->iniModesFastClock, modesIndex, in ar5008_hw_process_ini()
787 ar5008_hw_override_ini(ah, chan); in ar5008_hw_process_ini()
788 ar5008_hw_set_channel_regs(ah, chan); in ar5008_hw_process_ini()
789 ar5008_hw_init_chain_masks(ah); in ar5008_hw_process_ini()
790 ath9k_olc_init(ah); in ar5008_hw_process_ini()
791 ath9k_hw_apply_txpower(ah, chan, false); in ar5008_hw_process_ini()
794 if (!ath9k_hw_set_rf_regs(ah, chan, freqIndex)) { in ar5008_hw_process_ini()
795 ath_err(ath9k_hw_common(ah), "ar5416SetRfRegs failed\n"); in ar5008_hw_process_ini()
802 static void ar5008_hw_set_rfmode(struct ath_hw *ah, struct ath9k_channel *chan) in ar5008_hw_set_rfmode() argument
814 if (!AR_SREV_9280_20_OR_LATER(ah)) in ar5008_hw_set_rfmode()
818 if (IS_CHAN_A_FAST_CLOCK(ah, chan)) in ar5008_hw_set_rfmode()
821 REG_WRITE(ah, AR_PHY_MODE, rfMode); in ar5008_hw_set_rfmode()
824 static void ar5008_hw_mark_phy_inactive(struct ath_hw *ah) in ar5008_hw_mark_phy_inactive() argument
826 REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS); in ar5008_hw_mark_phy_inactive()
829 static void ar5008_hw_set_delta_slope(struct ath_hw *ah, in ar5008_hw_set_delta_slope() argument
841 ath9k_hw_get_channel_centers(ah, chan, ¢ers); in ar5008_hw_set_delta_slope()
844 ath9k_hw_get_delta_slope_vals(ah, coef_scaled, &ds_coef_man, in ar5008_hw_set_delta_slope()
847 REG_RMW_FIELD(ah, AR_PHY_TIMING3, in ar5008_hw_set_delta_slope()
849 REG_RMW_FIELD(ah, AR_PHY_TIMING3, in ar5008_hw_set_delta_slope()
854 ath9k_hw_get_delta_slope_vals(ah, coef_scaled, &ds_coef_man, in ar5008_hw_set_delta_slope()
857 REG_RMW_FIELD(ah, AR_PHY_HALFGI, in ar5008_hw_set_delta_slope()
859 REG_RMW_FIELD(ah, AR_PHY_HALFGI, in ar5008_hw_set_delta_slope()
863 static bool ar5008_hw_rfbus_req(struct ath_hw *ah) in ar5008_hw_rfbus_req() argument
865 REG_WRITE(ah, AR_PHY_RFBUS_REQ, AR_PHY_RFBUS_REQ_EN); in ar5008_hw_rfbus_req()
866 return ath9k_hw_wait(ah, AR_PHY_RFBUS_GRANT, AR_PHY_RFBUS_GRANT_EN, in ar5008_hw_rfbus_req()
870 static void ar5008_hw_rfbus_done(struct ath_hw *ah) in ar5008_hw_rfbus_done() argument
872 u32 synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY; in ar5008_hw_rfbus_done()
874 ath9k_hw_synth_delay(ah, ah->curchan, synthDelay); in ar5008_hw_rfbus_done()
876 REG_WRITE(ah, AR_PHY_RFBUS_REQ, 0); in ar5008_hw_rfbus_done()
879 static void ar5008_restore_chainmask(struct ath_hw *ah) in ar5008_restore_chainmask() argument
881 int rx_chainmask = ah->rxchainmask; in ar5008_restore_chainmask()
884 REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx_chainmask); in ar5008_restore_chainmask()
885 REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx_chainmask); in ar5008_restore_chainmask()
889 static u32 ar9160_hw_compute_pll_control(struct ath_hw *ah, in ar9160_hw_compute_pll_control() argument
909 static u32 ar5008_hw_compute_pll_control(struct ath_hw *ah, in ar5008_hw_compute_pll_control() argument
929 static bool ar5008_hw_ani_control_new(struct ath_hw *ah, in ar5008_hw_ani_control_new() argument
933 struct ath_common *common = ath9k_hw_common(ah); in ar5008_hw_ani_control_new()
934 struct ath9k_channel *chan = ah->curchan; in ar5008_hw_ani_control_new()
935 struct ar5416AniState *aniState = &ah->ani; in ar5008_hw_ani_control_new()
938 switch (cmd & ah->ani_function) { in ar5008_hw_ani_control_new()
973 REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, in ar5008_hw_ani_control_new()
976 REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, in ar5008_hw_ani_control_new()
979 REG_RMW_FIELD(ah, AR_PHY_SFCORR, in ar5008_hw_ani_control_new()
981 REG_RMW_FIELD(ah, AR_PHY_SFCORR, in ar5008_hw_ani_control_new()
983 REG_RMW_FIELD(ah, AR_PHY_SFCORR, in ar5008_hw_ani_control_new()
985 REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, in ar5008_hw_ani_control_new()
989 REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, in ar5008_hw_ani_control_new()
991 REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, in ar5008_hw_ani_control_new()
993 REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, in ar5008_hw_ani_control_new()
995 REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, in ar5008_hw_ani_control_new()
999 REG_SET_BIT(ah, AR_PHY_SFCORR_LOW, in ar5008_hw_ani_control_new()
1002 REG_CLR_BIT(ah, AR_PHY_SFCORR_LOW, in ar5008_hw_ani_control_new()
1013 ah->stats.ast_ani_ofdmon++; in ar5008_hw_ani_control_new()
1015 ah->stats.ast_ani_ofdmoff++; in ar5008_hw_ani_control_new()
1024 REG_RMW_FIELD(ah, AR_PHY_FIND_SIG, in ar5008_hw_ani_control_new()
1026 REG_RMW_FIELD(ah, AR_PHY_FIND_SIG_LOW, in ar5008_hw_ani_control_new()
1047 ah->stats.ast_ani_stepup++; in ar5008_hw_ani_control_new()
1049 ah->stats.ast_ani_stepdown++; in ar5008_hw_ani_control_new()
1058 REG_RMW_FIELD(ah, AR_PHY_TIMING5, in ar5008_hw_ani_control_new()
1061 REG_RMW_FIELD(ah, AR_PHY_EXT_CCA, in ar5008_hw_ani_control_new()
1082 ah->stats.ast_ani_spurup++; in ar5008_hw_ani_control_new()
1084 ah->stats.ast_ani_spurdown++; in ar5008_hw_ani_control_new()
1113 static void ar5008_hw_do_getnf(struct ath_hw *ah, in ar5008_hw_do_getnf() argument
1118 nf = MS(REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); in ar5008_hw_do_getnf()
1121 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); in ar5008_hw_do_getnf()
1124 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); in ar5008_hw_do_getnf()
1127 if (!IS_CHAN_HT40(ah->curchan)) in ar5008_hw_do_getnf()
1130 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); in ar5008_hw_do_getnf()
1133 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); in ar5008_hw_do_getnf()
1136 nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); in ar5008_hw_do_getnf()
1145 static void ar5008_hw_ani_cache_ini_regs(struct ath_hw *ah) in ar5008_hw_ani_cache_ini_regs() argument
1147 struct ath_common *common = ath9k_hw_common(ah); in ar5008_hw_ani_cache_ini_regs()
1148 struct ath9k_channel *chan = ah->curchan; in ar5008_hw_ani_cache_ini_regs()
1149 struct ar5416AniState *aniState = &ah->ani; in ar5008_hw_ani_cache_ini_regs()
1156 ah->hw_version.macVersion, in ar5008_hw_ani_cache_ini_regs()
1157 ah->hw_version.macRev, in ar5008_hw_ani_cache_ini_regs()
1158 ah->opmode, in ar5008_hw_ani_cache_ini_regs()
1161 val = REG_READ(ah, AR_PHY_SFCORR); in ar5008_hw_ani_cache_ini_regs()
1166 val = REG_READ(ah, AR_PHY_SFCORR_LOW); in ar5008_hw_ani_cache_ini_regs()
1171 val = REG_READ(ah, AR_PHY_SFCORR_EXT); in ar5008_hw_ani_cache_ini_regs()
1176 iniDef->firstep = REG_READ_FIELD(ah, in ar5008_hw_ani_cache_ini_regs()
1179 iniDef->firstepLow = REG_READ_FIELD(ah, in ar5008_hw_ani_cache_ini_regs()
1182 iniDef->cycpwrThr1 = REG_READ_FIELD(ah, in ar5008_hw_ani_cache_ini_regs()
1185 iniDef->cycpwrThr1Ext = REG_READ_FIELD(ah, in ar5008_hw_ani_cache_ini_regs()
1196 static void ar5008_hw_set_nf_limits(struct ath_hw *ah) in ar5008_hw_set_nf_limits() argument
1198 ah->nf_2g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_2GHZ; in ar5008_hw_set_nf_limits()
1199 ah->nf_2g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_2GHZ; in ar5008_hw_set_nf_limits()
1200 ah->nf_2g.nominal = AR_PHY_CCA_NOM_VAL_5416_2GHZ; in ar5008_hw_set_nf_limits()
1201 ah->nf_5g.max = AR_PHY_CCA_MAX_GOOD_VAL_5416_5GHZ; in ar5008_hw_set_nf_limits()
1202 ah->nf_5g.min = AR_PHY_CCA_MIN_GOOD_VAL_5416_5GHZ; in ar5008_hw_set_nf_limits()
1203 ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ; in ar5008_hw_set_nf_limits()
1206 static void ar5008_hw_set_radar_params(struct ath_hw *ah, in ar5008_hw_set_radar_params() argument
1212 REG_CLR_BIT(ah, AR_PHY_RADAR_0, AR_PHY_RADAR_0_ENA); in ar5008_hw_set_radar_params()
1223 radar_1 = REG_READ(ah, AR_PHY_RADAR_1); in ar5008_hw_set_radar_params()
1232 REG_WRITE(ah, AR_PHY_RADAR_0, radar_0); in ar5008_hw_set_radar_params()
1233 REG_WRITE(ah, AR_PHY_RADAR_1, radar_1); in ar5008_hw_set_radar_params()
1235 REG_SET_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); in ar5008_hw_set_radar_params()
1237 REG_CLR_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); in ar5008_hw_set_radar_params()
1240 static void ar5008_hw_set_radar_conf(struct ath_hw *ah) in ar5008_hw_set_radar_conf() argument
1242 struct ath_hw_radar_conf *conf = &ah->radar_conf; in ar5008_hw_set_radar_conf()
1254 static void ar5008_hw_init_txpower_cck(struct ath_hw *ah, int16_t *rate_array) in ar5008_hw_init_txpower_cck() argument
1257 ah->tx_power[0] = CCK_DELTA(rate_array[rate1l]); in ar5008_hw_init_txpower_cck()
1258 ah->tx_power[1] = CCK_DELTA(min(rate_array[rate2l], in ar5008_hw_init_txpower_cck()
1260 ah->tx_power[2] = CCK_DELTA(min(rate_array[rate5_5l], in ar5008_hw_init_txpower_cck()
1262 ah->tx_power[3] = CCK_DELTA(min(rate_array[rate11l], in ar5008_hw_init_txpower_cck()
1267 static void ar5008_hw_init_txpower_ofdm(struct ath_hw *ah, int16_t *rate_array, in ar5008_hw_init_txpower_ofdm() argument
1273 ah->tx_power[i] = rate_array[idx]; in ar5008_hw_init_txpower_ofdm()
1278 static void ar5008_hw_init_txpower_ht(struct ath_hw *ah, int16_t *rate_array, in ar5008_hw_init_txpower_ht() argument
1285 ah->tx_power[i] = rate_array[mcs_idx] + ht40_delta; in ar5008_hw_init_txpower_ht()
1288 memcpy(&ah->tx_power[ds_offset], &ah->tx_power[ss_offset], in ar5008_hw_init_txpower_ht()
1292 void ar5008_hw_init_rate_txpower(struct ath_hw *ah, int16_t *rate_array, in ar5008_hw_init_rate_txpower() argument
1296 ar5008_hw_init_txpower_ofdm(ah, rate_array, in ar5008_hw_init_rate_txpower()
1299 ar5008_hw_init_txpower_ht(ah, rate_array, in ar5008_hw_init_rate_txpower()
1306 ar5008_hw_init_txpower_cck(ah, rate_array); in ar5008_hw_init_rate_txpower()
1307 ar5008_hw_init_txpower_ofdm(ah, rate_array, in ar5008_hw_init_rate_txpower()
1310 ar5008_hw_init_txpower_ht(ah, rate_array, in ar5008_hw_init_rate_txpower()
1319 int ar5008_hw_attach_phy_ops(struct ath_hw *ah) in ar5008_hw_attach_phy_ops() argument
1321 struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); in ar5008_hw_attach_phy_ops()
1332 ret = ar5008_hw_rf_alloc_ext_banks(ah); in ar5008_hw_attach_phy_ops()
1355 if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) in ar5008_hw_attach_phy_ops()
1360 ar5008_hw_set_nf_limits(ah); in ar5008_hw_attach_phy_ops()
1361 ar5008_hw_set_radar_conf(ah); in ar5008_hw_attach_phy_ops()
1362 memcpy(ah->nf_regs, ar5416_cca_regs, sizeof(ah->nf_regs)); in ar5008_hw_attach_phy_ops()