|
@@ -2122,6 +2122,9 @@ static int rtl8723a_channel_to_group(int channel)
|
|
|
return group;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Valid for rtl8723bu and rtl8192eu
|
|
|
+ */
|
|
|
static int rtl8723b_channel_to_group(int channel)
|
|
|
{
|
|
|
int group;
|
|
@@ -2987,6 +2990,43 @@ static int rtl8192eu_parse_efuse(struct rtl8xxxu_priv *priv)
|
|
|
|
|
|
ether_addr_copy(priv->mac_addr, efuse->mac_addr);
|
|
|
|
|
|
+ memcpy(priv->cck_tx_power_index_A, efuse->tx_power_index_A.cck_base,
|
|
|
+ sizeof(efuse->tx_power_index_A.cck_base));
|
|
|
+ memcpy(priv->cck_tx_power_index_B, efuse->tx_power_index_B.cck_base,
|
|
|
+ sizeof(efuse->tx_power_index_B.cck_base));
|
|
|
+
|
|
|
+ memcpy(priv->ht40_1s_tx_power_index_A,
|
|
|
+ efuse->tx_power_index_A.ht40_base,
|
|
|
+ sizeof(efuse->tx_power_index_A.ht40_base));
|
|
|
+ memcpy(priv->ht40_1s_tx_power_index_B,
|
|
|
+ efuse->tx_power_index_B.ht40_base,
|
|
|
+ sizeof(efuse->tx_power_index_B.ht40_base));
|
|
|
+
|
|
|
+ priv->ht20_tx_power_diff[0].a =
|
|
|
+ efuse->tx_power_index_A.ht20_ofdm_1s_diff.b;
|
|
|
+ priv->ht20_tx_power_diff[0].b =
|
|
|
+ efuse->tx_power_index_B.ht20_ofdm_1s_diff.b;
|
|
|
+
|
|
|
+ priv->ht40_tx_power_diff[0].a = 0;
|
|
|
+ priv->ht40_tx_power_diff[0].b = 0;
|
|
|
+
|
|
|
+ for (i = 1; i < RTL8723B_TX_COUNT; i++) {
|
|
|
+ priv->ofdm_tx_power_diff[i].a =
|
|
|
+ efuse->tx_power_index_A.pwr_diff[i - 1].ofdm;
|
|
|
+ priv->ofdm_tx_power_diff[i].b =
|
|
|
+ efuse->tx_power_index_B.pwr_diff[i - 1].ofdm;
|
|
|
+
|
|
|
+ priv->ht20_tx_power_diff[i].a =
|
|
|
+ efuse->tx_power_index_A.pwr_diff[i - 1].ht20;
|
|
|
+ priv->ht20_tx_power_diff[i].b =
|
|
|
+ efuse->tx_power_index_B.pwr_diff[i - 1].ht20;
|
|
|
+
|
|
|
+ priv->ht40_tx_power_diff[i].a =
|
|
|
+ efuse->tx_power_index_A.pwr_diff[i - 1].ht40;
|
|
|
+ priv->ht40_tx_power_diff[i].b =
|
|
|
+ efuse->tx_power_index_B.pwr_diff[i - 1].ht40;
|
|
|
+ }
|
|
|
+
|
|
|
priv->has_xtalk = 1;
|
|
|
priv->xtalk = priv->efuse_wifi.efuse8192eu.xtal_k & 0x3f;
|
|
|
|