rtl8xxxu: Set 8723bu MCS TX power
authorJes Sorensen <Jes.Sorensen@redhat.com>
Mon, 29 Feb 2016 22:05:24 +0000 (17:05 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 10 Mar 2016 13:29:14 +0000 (15:29 +0200)
This adds the missing support for setting MCS TX power rates on 8723bu.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c

index e8006055c7c4169c0ed1f38580771da1f8793492..56813390c0ea4bae2f54dd1e0ae879c68b4c180a 100644 (file)
@@ -2062,8 +2062,8 @@ rtl8723a_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)
 static void
 rtl8723b_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)
 {
-       u32 val32, ofdm;
-       u8 cck, ofdmbase;
+       u32 val32, ofdm, mcs;
+       u8 cck, ofdmbase, mcsbase;
        int group, tx_idx;
 
        tx_idx = 0;
@@ -2086,6 +2086,16 @@ rtl8723b_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)
 
        rtl8xxxu_write32(priv, REG_TX_AGC_A_RATE18_06, ofdm);
        rtl8xxxu_write32(priv, REG_TX_AGC_A_RATE54_24, ofdm);
+
+       mcsbase = priv->ht40_1s_tx_power_index_B[group];
+       if (ht40)
+               mcsbase += priv->ht40_tx_power_diff[tx_idx++].b;
+       else
+               mcsbase += priv->ht20_tx_power_diff[tx_idx++].b;
+       mcs = mcsbase | mcsbase << 8 | mcsbase << 16 | mcsbase << 24;
+
+       rtl8xxxu_write32(priv, REG_TX_AGC_A_MCS03_MCS00, mcs);
+       rtl8xxxu_write32(priv, REG_TX_AGC_A_MCS07_MCS04, mcs);
 }
 
 static void rtl8xxxu_set_linktype(struct rtl8xxxu_priv *priv,