diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-11-10 21:18:38 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-11-16 16:37:08 -0500 |
commit | 4e8c14e9587c38f4cce8049c766935629fdb8d46 (patch) | |
tree | 7dc06b37bc5648314c96ea9bbb39c9544e98ecd5 /drivers/net/wireless/ath/ath9k/ar5008_phy.c | |
parent | 82b873afe83c81d9b1273a816bbdacb266f71a52 (diff) |
ath9k_hw: add a private op for configuring radar pulse detection
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ar5008_phy.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar5008_phy.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c index c83a22cfbe1e..3686811cc8df 100644 --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c | |||
@@ -1579,6 +1579,37 @@ static void ar5008_hw_set_nf_limits(struct ath_hw *ah) | |||
1579 | ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ; | 1579 | ah->nf_5g.nominal = AR_PHY_CCA_NOM_VAL_5416_5GHZ; |
1580 | } | 1580 | } |
1581 | 1581 | ||
1582 | static void ar5008_hw_set_radar_params(struct ath_hw *ah, | ||
1583 | struct ath_hw_radar_conf *conf) | ||
1584 | { | ||
1585 | u32 radar_0 = 0, radar_1 = 0; | ||
1586 | |||
1587 | if (!conf) { | ||
1588 | REG_CLR_BIT(ah, AR_PHY_RADAR_0, AR_PHY_RADAR_0_ENA); | ||
1589 | return; | ||
1590 | } | ||
1591 | |||
1592 | radar_0 |= AR_PHY_RADAR_0_ENA | AR_PHY_RADAR_0_FFT_ENA; | ||
1593 | radar_0 |= SM(conf->fir_power, AR_PHY_RADAR_0_FIRPWR); | ||
1594 | radar_0 |= SM(conf->radar_rssi, AR_PHY_RADAR_0_RRSSI); | ||
1595 | radar_0 |= SM(conf->pulse_height, AR_PHY_RADAR_0_HEIGHT); | ||
1596 | radar_0 |= SM(conf->pulse_rssi, AR_PHY_RADAR_0_PRSSI); | ||
1597 | radar_0 |= SM(conf->pulse_inband, AR_PHY_RADAR_0_INBAND); | ||
1598 | |||
1599 | radar_1 |= AR_PHY_RADAR_1_MAX_RRSSI; | ||
1600 | radar_1 |= AR_PHY_RADAR_1_BLOCK_CHECK; | ||
1601 | radar_1 |= SM(conf->pulse_maxlen, AR_PHY_RADAR_1_MAXLEN); | ||
1602 | radar_1 |= SM(conf->pulse_inband_step, AR_PHY_RADAR_1_RELSTEP_THRESH); | ||
1603 | radar_1 |= SM(conf->radar_inband, AR_PHY_RADAR_1_RELPWR_THRESH); | ||
1604 | |||
1605 | REG_WRITE(ah, AR_PHY_RADAR_0, radar_0); | ||
1606 | REG_WRITE(ah, AR_PHY_RADAR_1, radar_1); | ||
1607 | if (conf->ext_channel) | ||
1608 | REG_SET_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); | ||
1609 | else | ||
1610 | REG_CLR_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); | ||
1611 | } | ||
1612 | |||
1582 | void ar5008_hw_attach_phy_ops(struct ath_hw *ah) | 1613 | void ar5008_hw_attach_phy_ops(struct ath_hw *ah) |
1583 | { | 1614 | { |
1584 | struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); | 1615 | struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); |
@@ -1609,6 +1640,7 @@ void ar5008_hw_attach_phy_ops(struct ath_hw *ah) | |||
1609 | priv_ops->restore_chainmask = ar5008_restore_chainmask; | 1640 | priv_ops->restore_chainmask = ar5008_restore_chainmask; |
1610 | priv_ops->set_diversity = ar5008_set_diversity; | 1641 | priv_ops->set_diversity = ar5008_set_diversity; |
1611 | priv_ops->do_getnf = ar5008_hw_do_getnf; | 1642 | priv_ops->do_getnf = ar5008_hw_do_getnf; |
1643 | priv_ops->set_radar_params = ar5008_hw_set_radar_params; | ||
1612 | 1644 | ||
1613 | if (modparam_force_new_ani) { | 1645 | if (modparam_force_new_ani) { |
1614 | priv_ops->ani_control = ar5008_hw_ani_control_new; | 1646 | priv_ops->ani_control = ar5008_hw_ani_control_new; |