mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
69 lines
2.2 KiB
Diff
69 lines
2.2 KiB
Diff
From 890ae4d717f1bed1e4136fec0611273bfd90bd55 Mon Sep 17 00:00:00 2001
|
|
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Tue, 19 Sep 2023 13:20:30 +0200
|
|
Subject: [PATCH] wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling
|
|
|
|
On MT76x0, LNA gain should be applied for both external and internal LNA.
|
|
On MT76x2, LNA gain should be treated as 0 for external LNA.
|
|
Move the LNA type based logic to mt76x2 in order to fix mt76x0.
|
|
|
|
Fixes: 2daa67588f34 ("mt76x0: unify lna_gain parsing")
|
|
Reported-by: Shiji Yang <yangshiji66@outlook.com>
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
mt76x02_eeprom.c | 7 -------
|
|
mt76x2/eeprom.c | 13 +++++++++++--
|
|
2 files changed, 11 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/mt76x02_eeprom.c b/mt76x02_eeprom.c
|
|
index 0acabba2d..5d402cf29 100644
|
|
--- a/mt76x02_eeprom.c
|
|
+++ b/mt76x02_eeprom.c
|
|
@@ -131,15 +131,8 @@ u8 mt76x02_get_lna_gain(struct mt76x02_dev *dev,
|
|
s8 *lna_2g, s8 *lna_5g,
|
|
struct ieee80211_channel *chan)
|
|
{
|
|
- u16 val;
|
|
u8 lna;
|
|
|
|
- val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
|
|
- if (val & MT_EE_NIC_CONF_1_LNA_EXT_2G)
|
|
- *lna_2g = 0;
|
|
- if (val & MT_EE_NIC_CONF_1_LNA_EXT_5G)
|
|
- memset(lna_5g, 0, sizeof(s8) * 3);
|
|
-
|
|
if (chan->band == NL80211_BAND_2GHZ)
|
|
lna = *lna_2g;
|
|
else if (chan->hw_value <= 64)
|
|
diff --git a/mt76x2/eeprom.c b/mt76x2/eeprom.c
|
|
index d5809408d..8c0185588 100644
|
|
--- a/mt76x2/eeprom.c
|
|
+++ b/mt76x2/eeprom.c
|
|
@@ -256,7 +256,8 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
|
|
struct ieee80211_channel *chan = dev->mphy.chandef.chan;
|
|
int channel = chan->hw_value;
|
|
s8 lna_5g[3], lna_2g;
|
|
- u8 lna;
|
|
+ bool use_lna;
|
|
+ u8 lna = 0;
|
|
u16 val;
|
|
|
|
if (chan->band == NL80211_BAND_2GHZ)
|
|
@@ -275,7 +276,15 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
|
|
dev->cal.rx.mcu_gain |= (lna_5g[1] & 0xff) << 16;
|
|
dev->cal.rx.mcu_gain |= (lna_5g[2] & 0xff) << 24;
|
|
|
|
- lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
|
|
+ val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);
|
|
+ if (chan->band == NL80211_BAND_2GHZ)
|
|
+ use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_2G);
|
|
+ else
|
|
+ use_lna = !(val & MT_EE_NIC_CONF_1_LNA_EXT_5G);
|
|
+
|
|
+ if (use_lna)
|
|
+ lna = mt76x02_get_lna_gain(dev, &lna_2g, lna_5g, chan);
|
|
+
|
|
dev->cal.rx.lna_gain = mt76x02_sign_extend(lna, 8);
|
|
}
|
|
EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);
|