mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 15:48:56 +07:00
mt76x2: move mt76x2_phy_tssi_compensate in mt76x2-common module
Move mt76x2_phy_tssi_compensate routine in mt76x2-common module since it is shared between mt76x2 and mt76x2u drivers Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
edaa580bc8
commit
8842d485cb
@ -237,6 +237,7 @@ int mt76x2_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||||||
u16 queue, const struct ieee80211_tx_queue_params *params);
|
u16 queue, const struct ieee80211_tx_queue_params *params);
|
||||||
void mt76x2_txq_init(struct mt76x2_dev *dev, struct ieee80211_txq *txq);
|
void mt76x2_txq_init(struct mt76x2_dev *dev, struct ieee80211_txq *txq);
|
||||||
|
|
||||||
|
void mt76x2_phy_tssi_compensate(struct mt76x2_dev *dev, bool wait);
|
||||||
void mt76x2_phy_set_txpower_regs(struct mt76x2_dev *dev,
|
void mt76x2_phy_set_txpower_regs(struct mt76x2_dev *dev,
|
||||||
enum nl80211_band band);
|
enum nl80211_band band);
|
||||||
void mt76x2_configure_tx_delay(struct mt76x2_dev *dev,
|
void mt76x2_configure_tx_delay(struct mt76x2_dev *dev,
|
||||||
|
@ -403,47 +403,6 @@ int mt76x2_phy_set_channel(struct mt76x2_dev *dev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
mt76x2_phy_tssi_compensate(struct mt76x2_dev *dev)
|
|
||||||
{
|
|
||||||
struct ieee80211_channel *chan = dev->mt76.chandef.chan;
|
|
||||||
struct mt76x2_tx_power_info txp;
|
|
||||||
struct mt76x2_tssi_comp t = {};
|
|
||||||
|
|
||||||
if (!dev->cal.tssi_cal_done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!dev->cal.tssi_comp_pending) {
|
|
||||||
/* TSSI trigger */
|
|
||||||
t.cal_mode = BIT(0);
|
|
||||||
mt76x2_mcu_tssi_comp(dev, &t);
|
|
||||||
dev->cal.tssi_comp_pending = true;
|
|
||||||
} else {
|
|
||||||
if (mt76_rr(dev, MT_BBP(CORE, 34)) & BIT(4))
|
|
||||||
return;
|
|
||||||
|
|
||||||
dev->cal.tssi_comp_pending = false;
|
|
||||||
mt76x2_get_power_info(dev, &txp, chan);
|
|
||||||
|
|
||||||
if (mt76x2_ext_pa_enabled(dev, chan->band))
|
|
||||||
t.pa_mode = 1;
|
|
||||||
|
|
||||||
t.cal_mode = BIT(1);
|
|
||||||
t.slope0 = txp.chain[0].tssi_slope;
|
|
||||||
t.offset0 = txp.chain[0].tssi_offset;
|
|
||||||
t.slope1 = txp.chain[1].tssi_slope;
|
|
||||||
t.offset1 = txp.chain[1].tssi_offset;
|
|
||||||
mt76x2_mcu_tssi_comp(dev, &t);
|
|
||||||
|
|
||||||
if (t.pa_mode || dev->cal.dpd_cal_done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
usleep_range(10000, 20000);
|
|
||||||
mt76x02_mcu_calibrate(&dev->mt76, MCU_CAL_DPD, chan->hw_value, true);
|
|
||||||
dev->cal.dpd_cal_done = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mt76x2_phy_temp_compensate(struct mt76x2_dev *dev)
|
mt76x2_phy_temp_compensate(struct mt76x2_dev *dev)
|
||||||
{
|
{
|
||||||
@ -478,7 +437,7 @@ void mt76x2_phy_calibrate(struct work_struct *work)
|
|||||||
|
|
||||||
dev = container_of(work, struct mt76x2_dev, cal_work.work);
|
dev = container_of(work, struct mt76x2_dev, cal_work.work);
|
||||||
mt76x2_phy_channel_calibrate(dev, false);
|
mt76x2_phy_channel_calibrate(dev, false);
|
||||||
mt76x2_phy_tssi_compensate(dev);
|
mt76x2_phy_tssi_compensate(dev, true);
|
||||||
mt76x2_phy_temp_compensate(dev);
|
mt76x2_phy_temp_compensate(dev);
|
||||||
mt76x2_phy_update_channel_gain(dev);
|
mt76x2_phy_update_channel_gain(dev);
|
||||||
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->cal_work,
|
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->cal_work,
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "mt76x2.h"
|
#include "mt76x2.h"
|
||||||
#include "mt76x2_eeprom.h"
|
#include "mt76x2_eeprom.h"
|
||||||
|
#include "mt76x2_mcu.h"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mt76x2_adjust_high_lna_gain(struct mt76x2_dev *dev, int reg, s8 offset)
|
mt76x2_adjust_high_lna_gain(struct mt76x2_dev *dev, int reg, s8 offset)
|
||||||
@ -347,3 +348,45 @@ int mt76x2_phy_get_min_avg_rssi(struct mt76x2_dev *dev)
|
|||||||
return min_rssi;
|
return min_rssi;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76x2_phy_get_min_avg_rssi);
|
EXPORT_SYMBOL_GPL(mt76x2_phy_get_min_avg_rssi);
|
||||||
|
|
||||||
|
void mt76x2_phy_tssi_compensate(struct mt76x2_dev *dev, bool wait)
|
||||||
|
{
|
||||||
|
struct ieee80211_channel *chan = dev->mt76.chandef.chan;
|
||||||
|
struct mt76x2_tx_power_info txp;
|
||||||
|
struct mt76x2_tssi_comp t = {};
|
||||||
|
|
||||||
|
if (!dev->cal.tssi_cal_done)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!dev->cal.tssi_comp_pending) {
|
||||||
|
/* TSSI trigger */
|
||||||
|
t.cal_mode = BIT(0);
|
||||||
|
mt76x2_mcu_tssi_comp(dev, &t);
|
||||||
|
dev->cal.tssi_comp_pending = true;
|
||||||
|
} else {
|
||||||
|
if (mt76_rr(dev, MT_BBP(CORE, 34)) & BIT(4))
|
||||||
|
return;
|
||||||
|
|
||||||
|
dev->cal.tssi_comp_pending = false;
|
||||||
|
mt76x2_get_power_info(dev, &txp, chan);
|
||||||
|
|
||||||
|
if (mt76x2_ext_pa_enabled(dev, chan->band))
|
||||||
|
t.pa_mode = 1;
|
||||||
|
|
||||||
|
t.cal_mode = BIT(1);
|
||||||
|
t.slope0 = txp.chain[0].tssi_slope;
|
||||||
|
t.offset0 = txp.chain[0].tssi_offset;
|
||||||
|
t.slope1 = txp.chain[1].tssi_slope;
|
||||||
|
t.offset1 = txp.chain[1].tssi_offset;
|
||||||
|
mt76x2_mcu_tssi_comp(dev, &t);
|
||||||
|
|
||||||
|
if (t.pa_mode || dev->cal.dpd_cal_done)
|
||||||
|
return;
|
||||||
|
|
||||||
|
usleep_range(10000, 20000);
|
||||||
|
mt76x02_mcu_calibrate(&dev->mt76, MCU_CAL_DPD,
|
||||||
|
chan->hw_value, wait);
|
||||||
|
dev->cal.dpd_cal_done = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mt76x2_phy_tssi_compensate);
|
||||||
|
@ -71,48 +71,6 @@ void mt76x2u_phy_channel_calibrate(struct mt76x2_dev *dev)
|
|||||||
mt76x2u_mac_resume(dev);
|
mt76x2u_mac_resume(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
mt76x2u_phy_tssi_compensate(struct mt76x2_dev *dev)
|
|
||||||
{
|
|
||||||
struct ieee80211_channel *chan = dev->mt76.chandef.chan;
|
|
||||||
struct mt76x2_tx_power_info txp;
|
|
||||||
struct mt76x2_tssi_comp t = {};
|
|
||||||
|
|
||||||
if (!dev->cal.tssi_cal_done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!dev->cal.tssi_comp_pending) {
|
|
||||||
/* TSSI trigger */
|
|
||||||
t.cal_mode = BIT(0);
|
|
||||||
mt76x2_mcu_tssi_comp(dev, &t);
|
|
||||||
dev->cal.tssi_comp_pending = true;
|
|
||||||
} else {
|
|
||||||
if (mt76_rr(dev, MT_BBP(CORE, 34)) & BIT(4))
|
|
||||||
return;
|
|
||||||
|
|
||||||
dev->cal.tssi_comp_pending = false;
|
|
||||||
mt76x2_get_power_info(dev, &txp, chan);
|
|
||||||
|
|
||||||
if (mt76x2_ext_pa_enabled(dev, chan->band))
|
|
||||||
t.pa_mode = 1;
|
|
||||||
|
|
||||||
t.cal_mode = BIT(1);
|
|
||||||
t.slope0 = txp.chain[0].tssi_slope;
|
|
||||||
t.offset0 = txp.chain[0].tssi_offset;
|
|
||||||
t.slope1 = txp.chain[1].tssi_slope;
|
|
||||||
t.offset1 = txp.chain[1].tssi_offset;
|
|
||||||
mt76x2_mcu_tssi_comp(dev, &t);
|
|
||||||
|
|
||||||
if (t.pa_mode || dev->cal.dpd_cal_done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
usleep_range(10000, 20000);
|
|
||||||
mt76x02_mcu_calibrate(&dev->mt76, MCU_CAL_DPD,
|
|
||||||
chan->hw_value, false);
|
|
||||||
dev->cal.dpd_cal_done = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mt76x2u_phy_update_channel_gain(struct mt76x2_dev *dev)
|
mt76x2u_phy_update_channel_gain(struct mt76x2_dev *dev)
|
||||||
{
|
{
|
||||||
@ -156,7 +114,7 @@ void mt76x2u_phy_calibrate(struct work_struct *work)
|
|||||||
struct mt76x2_dev *dev;
|
struct mt76x2_dev *dev;
|
||||||
|
|
||||||
dev = container_of(work, struct mt76x2_dev, cal_work.work);
|
dev = container_of(work, struct mt76x2_dev, cal_work.work);
|
||||||
mt76x2u_phy_tssi_compensate(dev);
|
mt76x2_phy_tssi_compensate(dev, false);
|
||||||
mt76x2u_phy_update_channel_gain(dev);
|
mt76x2u_phy_update_channel_gain(dev);
|
||||||
|
|
||||||
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->cal_work,
|
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->cal_work,
|
||||||
|
Loading…
Reference in New Issue
Block a user