mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling
[ Upstream commit684e45e120] 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:2daa67588f("mt76x0: unify lna_gain parsing") Reported-by: Shiji Yang <yangshiji66@outlook.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230919194747.31647-1-nbd@nbd.name Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
54a4faab2b
commit
666cdc43df
@@ -131,15 +131,8 @@ u8 mt76x02_get_lna_gain(struct mt76x02_dev *dev,
|
|||||||
s8 *lna_2g, s8 *lna_5g,
|
s8 *lna_2g, s8 *lna_5g,
|
||||||
struct ieee80211_channel *chan)
|
struct ieee80211_channel *chan)
|
||||||
{
|
{
|
||||||
u16 val;
|
|
||||||
u8 lna;
|
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)
|
if (chan->band == NL80211_BAND_2GHZ)
|
||||||
lna = *lna_2g;
|
lna = *lna_2g;
|
||||||
else if (chan->hw_value <= 64)
|
else if (chan->hw_value <= 64)
|
||||||
|
|||||||
@@ -256,7 +256,8 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
|
|||||||
struct ieee80211_channel *chan = dev->mphy.chandef.chan;
|
struct ieee80211_channel *chan = dev->mphy.chandef.chan;
|
||||||
int channel = chan->hw_value;
|
int channel = chan->hw_value;
|
||||||
s8 lna_5g[3], lna_2g;
|
s8 lna_5g[3], lna_2g;
|
||||||
u8 lna;
|
bool use_lna;
|
||||||
|
u8 lna = 0;
|
||||||
u16 val;
|
u16 val;
|
||||||
|
|
||||||
if (chan->band == NL80211_BAND_2GHZ)
|
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[1] & 0xff) << 16;
|
||||||
dev->cal.rx.mcu_gain |= (lna_5g[2] & 0xff) << 24;
|
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);
|
dev->cal.rx.lna_gain = mt76x02_sign_extend(lna, 8);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);
|
EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);
|
||||||
|
|||||||
Reference in New Issue
Block a user