diff options
author | adrian <adrian@FreeBSD.org> | 2011-11-19 21:12:35 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2011-11-19 21:12:35 +0000 |
commit | 1fa90aaeeedb00221b1815982aad6a1a42fcded1 (patch) | |
tree | 7b58bec804eca66b06a18537b602f57cca13b02b /sys/dev/ath | |
parent | 3a882beede34079da891acd627c3a5b1374e9c33 (diff) | |
download | FreeBSD-src-1fa90aaeeedb00221b1815982aad6a1a42fcded1.zip FreeBSD-src-1fa90aaeeedb00221b1815982aad6a1a42fcded1.tar.gz |
Add some (totally untested!) code to correctly set the RF half/quarter
mode configuration registers. This is apparently required for correct
behaviour, but also requires the chip to actually officially support it.
Sponsored by: Hobnob, Inc.
Diffstat (limited to 'sys/dev/ath')
-rw-r--r-- | sys/dev/ath/ath_hal/ar5416/ar5416_reset.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c index 598a2d3..86a3f92 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c @@ -724,6 +724,20 @@ ar5416SetRfMode(struct ath_hal *ah, const struct ieee80211_channel *chan) rfMode |= IEEE80211_IS_CHAN_5GHZ(chan) ? AR_PHY_MODE_RF5GHZ : AR_PHY_MODE_RF2GHZ; } + + /* + * Set half/quarter mode flags if required. + * + * This doesn't change the IFS timings at all; that needs to + * be done as part of the MAC setup. Similarly, the PLL + * configuration also needs some changes for the half/quarter + * rate clock. + */ + if (IEEE80211_IS_CHAN_HALF(chan)) + rfMode |= AR_PHY_MODE_HALF; + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + rfMode |= AR_PHY_MODE_QUARTER; + OS_REG_WRITE(ah, AR_PHY_MODE, rfMode); } |