Skip to content

Commit 63db9d4

Browse files
derennbd168
authored andcommitted
mt76: mt7921: introduce ACPI SAR config in tx power
Add new function mt7921_set_tx_sar_pwr() to update SAR power from .set_sar_specs and ACPI setting. Both settings would be merged into mt76_freq_range_power for final tx power value. Reviewed-by: Sean Wang <[email protected]> Co-developed-by: Ming Yen Hsieh <[email protected]> Signed-off-by: Ming Yen Hsieh <[email protected]> Signed-off-by: Deren Wu <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
1 parent f965333 commit 63db9d4

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

drivers/net/wireless/mediatek/mt76/mt7921/init.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,13 @@ mt7921_regd_notifier(struct wiphy *wiphy,
3434
{
3535
struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
3636
struct mt7921_dev *dev = mt7921_hw_dev(hw);
37-
struct mt7921_phy *phy = mt7921_hw_phy(hw);
3837

3938
memcpy(dev->mt76.alpha2, request->alpha2, sizeof(dev->mt76.alpha2));
4039
dev->mt76.region = request->dfs_region;
4140

4241
mt7921_mutex_acquire(dev);
4342
mt76_connac_mcu_set_channel_domain(hw->priv);
44-
mt76_connac_mcu_set_rate_txpower(phy->mt76);
43+
mt7921_set_tx_sar_pwr(hw, NULL);
4544
mt7921_mutex_release(dev);
4645
}
4746

drivers/net/wireless/mediatek/mt76/mt7921/main.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ int __mt7921_start(struct mt7921_phy *phy)
257257
if (err)
258258
return err;
259259

260-
err = mt76_connac_mcu_set_rate_txpower(phy->mt76);
260+
err = mt7921_set_tx_sar_pwr(mphy->hw, NULL);
261261
if (err)
262262
return err;
263263

@@ -548,7 +548,7 @@ static int mt7921_config(struct ieee80211_hw *hw, u32 changed)
548548
mt7921_mutex_acquire(dev);
549549

550550
if (changed & IEEE80211_CONF_CHANGE_POWER) {
551-
ret = mt76_connac_mcu_set_rate_txpower(phy->mt76);
551+
ret = mt7921_set_tx_sar_pwr(hw, NULL);
552552
if (ret)
553553
goto out;
554554
}
@@ -1469,20 +1469,33 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw,
14691469
}
14701470
#endif
14711471

1472+
int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
1473+
const struct cfg80211_sar_specs *sar)
1474+
{
1475+
struct mt76_phy *mphy = hw->priv;
1476+
int err;
1477+
1478+
if (sar) {
1479+
err = mt76_init_sar_power(hw, sar);
1480+
if (err)
1481+
return err;
1482+
}
1483+
1484+
mt7921_init_acpi_sar_power(mt7921_hw_phy(hw), !sar);
1485+
1486+
err = mt76_connac_mcu_set_rate_txpower(mphy);
1487+
1488+
return err;
1489+
}
1490+
14721491
static int mt7921_set_sar_specs(struct ieee80211_hw *hw,
14731492
const struct cfg80211_sar_specs *sar)
14741493
{
14751494
struct mt7921_dev *dev = mt7921_hw_dev(hw);
1476-
struct mt76_phy *mphy = hw->priv;
14771495
int err;
14781496

14791497
mt7921_mutex_acquire(dev);
1480-
err = mt76_init_sar_power(hw, sar);
1481-
if (err)
1482-
goto out;
1483-
1484-
err = mt76_connac_mcu_set_rate_txpower(mphy);
1485-
out:
1498+
err = mt7921_set_tx_sar_pwr(hw, sar);
14861499
mt7921_mutex_release(dev);
14871500

14881501
return err;

drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,4 +501,6 @@ mt7921_init_acpi_sar_power(struct mt7921_phy *phy, bool set_default)
501501
return 0;
502502
}
503503
#endif
504+
int mt7921_set_tx_sar_pwr(struct ieee80211_hw *hw,
505+
const struct cfg80211_sar_specs *sar);
504506
#endif

0 commit comments

Comments
 (0)