aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/ar9002_phy.c
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2010-09-02 04:34:42 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-09-07 13:54:33 -0400
commit21cc630f47d8589a42d563e89be4c631edbe8716 (patch)
tree82ed06d5a1a677f1cb74e9a9abd3ae7cb5302872 /drivers/net/wireless/ath/ath9k/ar9002_phy.c
parent754dc53641e0038cd4fd3574b1f5b3c7239f73ce (diff)
ath9k_hw: Add functions to get/set antenna diversity configuration
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ar9002_phy.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_phy.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_phy.c b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
index adbf031fbc5a..cd56c8692705 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
@@ -530,3 +530,38 @@ void ar9002_hw_attach_phy_ops(struct ath_hw *ah)
530 530
531 ar9002_hw_set_nf_limits(ah); 531 ar9002_hw_set_nf_limits(ah);
532} 532}
533
534void ath9k_hw_antdiv_comb_conf_get(struct ath_hw *ah,
535 struct ath_hw_antcomb_conf *antconf)
536{
537 u32 regval;
538
539 regval = REG_READ(ah, AR_PHY_MULTICHAIN_GAIN_CTL);
540 antconf->main_lna_conf = (regval & AR_PHY_9285_ANT_DIV_MAIN_LNACONF) >>
541 AR_PHY_9285_ANT_DIV_MAIN_LNACONF_S;
542 antconf->alt_lna_conf = (regval & AR_PHY_9285_ANT_DIV_ALT_LNACONF) >>
543 AR_PHY_9285_ANT_DIV_ALT_LNACONF_S;
544 antconf->fast_div_bias = (regval & AR_PHY_9285_FAST_DIV_BIAS) >>
545 AR_PHY_9285_FAST_DIV_BIAS_S;
546}
547EXPORT_SYMBOL(ath9k_hw_antdiv_comb_conf_get);
548
549void ath9k_hw_antdiv_comb_conf_set(struct ath_hw *ah,
550 struct ath_hw_antcomb_conf *antconf)
551{
552 u32 regval;
553
554 regval = REG_READ(ah, AR_PHY_MULTICHAIN_GAIN_CTL);
555 regval &= ~(AR_PHY_9285_ANT_DIV_MAIN_LNACONF |
556 AR_PHY_9285_ANT_DIV_ALT_LNACONF |
557 AR_PHY_9285_FAST_DIV_BIAS);
558 regval |= ((antconf->main_lna_conf << AR_PHY_9285_ANT_DIV_MAIN_LNACONF_S)
559 & AR_PHY_9285_ANT_DIV_MAIN_LNACONF);
560 regval |= ((antconf->alt_lna_conf << AR_PHY_9285_ANT_DIV_ALT_LNACONF_S)
561 & AR_PHY_9285_ANT_DIV_ALT_LNACONF);
562 regval |= ((antconf->fast_div_bias << AR_PHY_9285_FAST_DIV_BIAS_S)
563 & AR_PHY_9285_FAST_DIV_BIAS);
564
565 REG_WRITE(ah, AR_PHY_MULTICHAIN_GAIN_CTL, regval);
566}
567EXPORT_SYMBOL(ath9k_hw_antdiv_comb_conf_set);