summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/rtl818x/rtl8180_max2820.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-07-22 00:26:40 +0400
committerJohn W. Linville <linville@tuxdriver.com>2010-07-26 23:09:03 +0400
commit8b73fb8e29e9ae0458d36cc0dc25e2717587dfd4 (patch)
treea711485ca5e49078386f624ecbf4942288b77d89 /drivers/net/wireless/rtl818x/rtl8180_max2820.c
parent1ab36d68e37faa431d99a07cbfb477a48879934e (diff)
downloadlinux-8b73fb8e29e9ae0458d36cc0dc25e2717587dfd4.tar.xz
rtl8180: improve signal reporting for actual rtl8180 hardware
Adapted from Realtek-provided driver... Signed-off-by: John W. Linville <linville@tuxdriver.com> Tested-by: Pauli Nieminen <suokkos@gmail.com>
Diffstat (limited to 'drivers/net/wireless/rtl818x/rtl8180_max2820.c')
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180_max2820.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8180_max2820.c b/drivers/net/wireless/rtl818x/rtl8180_max2820.c
index 6c825fd7f3b6..16c4655181c0 100644
--- a/drivers/net/wireless/rtl818x/rtl8180_max2820.c
+++ b/drivers/net/wireless/rtl818x/rtl8180_max2820.c
@@ -74,6 +74,22 @@ static void max2820_write_phy_antenna(struct ieee80211_hw *dev, short chan)
rtl8180_write_phy(dev, 0x10, ant);
}
+static u8 max2820_rf_calc_rssi(u8 agc, u8 sq)
+{
+ bool odd;
+
+ odd = !!(agc & 1);
+
+ agc >>= 1;
+ if (odd)
+ agc += 76;
+ else
+ agc += 66;
+
+ /* TODO: change addends above to avoid mult / div below */
+ return 65 * agc / 100;
+}
+
static void max2820_rf_set_channel(struct ieee80211_hw *dev,
struct ieee80211_conf *conf)
{
@@ -148,5 +164,6 @@ const struct rtl818x_rf_ops max2820_rf_ops = {
.name = "Maxim",
.init = max2820_rf_init,
.stop = max2820_rf_stop,
- .set_chan = max2820_rf_set_channel
+ .set_chan = max2820_rf_set_channel,
+ .calc_rssi = max2820_rf_calc_rssi,
};