introduce BIOS SAR support
Subsystems (2)
cover introduce BIOS SAR support
From: Deren Wu <[email protected]>
Introduce BIOS SAR support for mt7921 serials.
Deren Wu (3):
mt76: add 6G band support in mt76_sar_freq_ranges
mt76: mt7921: introduce BIOS SAR support
mt76: mt7921: introduce BIOS SAR config in tx power
drivers/net/wireless/mediatek/mt76/mac80211.c | 6 + .../wireless/mediatek/mt76/mt7921/Makefile | 1 + .../wireless/mediatek/mt76/mt7921/bios_sar.c | 281 ++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/bios_sar.h | 93 ++++++ .../net/wireless/mediatek/mt76/mt7921/init.c | 5 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 32 +- .../wireless/mediatek/mt76/mt7921/mt7921.h | 22 ++ 7 files changed, 429 insertions(+), 11 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.h
Signature · 1 line
2.18.0
PATCH 1/3 mt76: add 6G band support in mt76_sar_freq_ranges
From: Deren Wu <[email protected]>
Add new frequencies support in mt76_sar_freq_ranges[]
* 5945 - 6165
* 6165 - 6405
* 6405 - 6525
* 6525 - 6705
* 6705 - 6865
* 6865 - 7125
--- drivers/net/wireless/mediatek/mt76/mac80211.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/net/wireless/mediatek/mt76/mac80211.c +6 -0
@@ -178,6 +178,12 @@ static const struct cfg80211_sar_freq_ranges mt76_sar_freq_ranges[] = { { .start_freq = 5350, .end_freq = 5470, }, { .start_freq = 5470, .end_freq = 5725, }, { .start_freq = 5725, .end_freq = 5950, }, + { .start_freq = 5945, .end_freq = 6165, }, + { .start_freq = 6165, .end_freq = 6405, }, + { .start_freq = 6405, .end_freq = 6525, }, + { .start_freq = 6525, .end_freq = 6705, }, + { .start_freq = 6705, .end_freq = 6865, }, + { .start_freq = 6865, .end_freq = 7125, }, }; static const struct cfg80211_sar_capa mt76_sar_capa = {
Signature · 1 line
2.18.0
Re: [PATCH 1/3] mt76: add 6G band support in mt76_sar_freq_ranges
suggest you s/6G/6 GHz/ in the patch subject to avoid confusion between "gigahertz" and "generation"
PATCH 2/3 mt76: mt7921: introduce BIOS SAR support
In reply to Deren WuFrom: Deren Wu <[email protected]>
In BIOS SAR enabled device, mt7921 should read power limit in BIOS config. The limit value would be applied to regular tx power settings in mt76.
Two major functionalities added:
1. Get BIOS SAR power table through ACPI.
2. Read power in Dynamic/Geo SAR table for tx power limit.
Table note
MTDS: Dynamic BIOS SAR table
MTGS: Geo BIOS SAR table
MTCL: Country List table (for 6G support)
--- .../wireless/mediatek/mt76/mt7921/Makefile | 1 + .../wireless/mediatek/mt76/mt7921/bios_sar.c | 281 ++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/bios_sar.h | 93 ++++++ .../net/wireless/mediatek/mt76/mt7921/init.c | 2 + .../wireless/mediatek/mt76/mt7921/mt7921.h | 20 ++ 5 files changed, 397 insertions(+) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.h
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -0
@@ -9,6 +9,7 @@ CFLAGS_trace.o := -I$(src) mt7921-common-y := mac.o mcu.o main.o init.o debugfs.o trace.o mt7921-common-$(CONFIG_NL80211_TESTMODE) += testmode.o +mt7921-common-$(CONFIG_ACPI) += bios_sar.o mt7921e-y := pci.o pci_mac.o pci_mcu.o dma.o mt7921s-y := sdio.o sdio_mac.o sdio_mcu.o mt7921u-y := usb.o usb_mac.o
drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.c new file +281 -0
281 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/bios_sar.h new file +93 -0
93 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/init.c +2 -0
@@ -289,6 +289,8 @@ int mt7921_register_device(struct mt7921_dev *dev)if (!mt76_is_mmio (&dev->mt76)) hw->extra_tx_headroom +=MT_SDIO_TXD_SIZE +MT_SDIO_HDR_SIZE ; +mt7921_init_bios_sar (dev); + ret =mt7921_init_wcid (dev);if (ret)return ret;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +20 -0
@@ -8,6 +8,7 @@#include <linux/ktime.h> #include "../mt76_connac_mcu.h" #include "regs.h" +#include "bios_sar.h" #define MT7921_MAX_INTERFACES 4#define MT7921_MAX_WMM_SETS 4
@@ -171,6 +172,9 @@ struct mt7921_phy {struct sk_buff_head scan_event_list;struct delayed_work scan_work; +#ifdef CONFIG_ACPI +struct mt7921_bios_sar *biossar; +#endif };#define mt7921_init_reset (dev) ((dev)->hif_ops->init_reset(dev))
@@ -481,4 +485,20 @@ int mt7921_mcu_uni_add_beacon_offload(struct mt7921_dev *dev,struct ieee80211_hw *hw, struct ieee80211_vif *vif, bool enable); +#ifdef CONFIG_ACPI +int mt7921_init_bios_sar (struct mt7921_dev *dev); +int mt7921_init_bios_sar_power (struct mt7921_phy *phy,bool set_default); +#else +static inline int +mt7921_init_bios_sar (struct mt7921_dev *dev) +{ +return 0 ; +} + +static inline int +mt7921_init_bios_sar_power (struct mt7921_phy *phy,bool set_default) +{ +return 0 ; +} +#endif #endif
Signature · 1 line
2.18.0
PATCH 3/3 mt76: mt7921: introduce BIOS SAR config in tx power
In reply to Deren WuFrom: Deren Wu <[email protected]>
Add new function mt7921_set_tx_sar_pwr() to update SAR power from .set_sar_specs and BIOS setting. Both settings would be merged into mt76_freq_range_power for final tx power value.
--- .../net/wireless/mediatek/mt76/mt7921/init.c | 3 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 32 +++++++++++++------ .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 ++ 3 files changed, 26 insertions(+), 11 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +1 -2
@@ -34,14 +34,13 @@ mt7921_regd_notifier(struct wiphy *wiphy, {struct ieee80211_hw *hw =wiphy_to_ieee80211_hw (wiphy);struct mt7921_dev *dev =mt7921_hw_dev (hw); -struct mt7921_phy *phy =mt7921_hw_phy (hw);memcpy (dev->mt76.alpha2, request->alpha2,sizeof (dev->mt76.alpha2)); dev->mt76.region = request->dfs_region;mt7921_mutex_acquire (dev);mt76_connac_mcu_set_channel_domain (hw->priv); -mt76_connac_mcu_set_rate_txpower (phy->mt76); +mt7921_set_tx_sar_pwr (hw,NULL );mt7921_mutex_release (dev); }
drivers/net/wireless/mediatek/mt76/mt7921/main.c +23 -9
@@ -257,7 +257,7 @@ int __mt7921_start(struct mt7921_phy *phy)if (err)return err; - err =mt76_connac_mcu_set_rate_txpower (phy->mt76); + err =mt7921_set_tx_sar_pwr (mphy->hw,NULL );if (err)return err;
@@ -548,7 +548,7 @@ static int mt7921_config(struct ieee80211_hw *hw, u32 changed)mt7921_mutex_acquire (dev);if (changed &IEEE80211_CONF_CHANGE_POWER ) { - ret =mt76_connac_mcu_set_rate_txpower (phy->mt76); + ret =mt7921_set_tx_sar_pwr (hw,NULL );if (ret) goto out; }
@@ -1469,20 +1469,34 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, }#endif +int mt7921_set_tx_sar_pwr (struct ieee80211_hw *hw, +const struct cfg80211_sar_specs *sar) +{ +struct mt76_phy *mphy = hw->priv; +int err; + +if (sar) { + err =mt76_init_sar_power (hw, sar); +if (err) +return err; + } + +mt7921_init_bios_sar_power (mt7921_hw_phy (hw), !sar); + + err =mt76_connac_mcu_set_rate_txpower (mphy); + +return err; +} +EXPORT_SYMBOL_GPL (mt7921_set_tx_sar_pwr); +static int mt7921_set_sar_specs (struct ieee80211_hw *hw,const struct cfg80211_sar_specs *sar) {struct mt7921_dev *dev =mt7921_hw_dev (hw); -struct mt76_phy *mphy = hw->priv;int err;mt7921_mutex_acquire (dev); - err =mt76_init_sar_power (hw, sar); -if (err) - goto out; - - err =mt76_connac_mcu_set_rate_txpower (mphy); -out: + err =mt7921_set_tx_sar_pwr (hw, sar);mt7921_mutex_release (dev);return err;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +2 -0
@@ -501,4 +501,6 @@ mt7921_init_bios_sar_power(struct mt7921_phy *phy, bool set_default)return 0 ; }#endif +int mt7921_set_tx_sar_pwr (struct ieee80211_hw *hw, +const struct cfg80211_sar_specs *sar);#endif
Signature · 1 line
2.18.0
Felix Fietkau
maintainerRe: [PATCH 3/3] mt76: mt7921: introduce BIOS SAR config in tx power
Quoted 33 lines · Deren Wu
From: Deren Wu <[email protected]>
Add new function
mt7921_set_tx_sar_pwr()to update SAR power from .set_sar_specs and BIOS setting. Both settings would be merged intomt76_freq_range_powerfor 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]>--- .../net/wireless/mediatek/mt76/mt7921/init.c | 3 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 32 +++++++++++++------ .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 ++ 3 files changed, 26 insertions(+), 11 deletions(-)drivers/net/wireless/mediatek/mt76/mt7921/main.c +9
-0@@ -1469,20 +1469,34 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, }#endif +int mt7921_set_tx_sar_pwr (struct ieee80211_hw *hw, +const struct cfg80211_sar_specs *sar) +{ +struct mt76_phy *mphy = hw->priv; +int err; + +if (sar) { + err =mt76_init_sar_power (hw, sar); +if (err)
drivers/net/wireless/mediatek/mt76/mt7921/main.c static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, · line 1490
Quoted 10 lines
drivers/net/wireless/mediatek/mt76/mt7921/main.c +10
-0+return err; + } + +mt7921_init_bios_sar_power (mt7921_hw_phy (hw), !sar); + + err =mt76_connac_mcu_set_rate_txpower (mphy); + +return err; +} +EXPORT_SYMBOL_GPL (mt7921_set_tx_sar_pwr);
Why is this exported?
- Felix
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
Re: [PATCH 3/3] mt76: mt7921: introduce BIOS SAR config in tx power
Hi Felix,
Quoted 41 lines · Felix Fietkau
Quoted 40 lines · Deren Wu
From: Deren Wu <[email protected]>
Add new function
mt7921_set_tx_sar_pwr()to update SAR power from .set_sar_specs and BIOS setting. Both settings would be merged intomt76_freq_range_powerfor 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]>--- .../net/wireless/mediatek/mt76/mt7921/init.c | 3 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 32 +++++++++++++- ----- .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 ++ 3 files changed, 26 insertions(+), 11 deletions(-)drivers/net/wireless/mediatek/mt76/mt7921/main.c +13
-0@@ -1469,20 +1469,34 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, }#endif +int mt7921_set_tx_sar_pwr (struct ieee80211_hw *hw, +const struct cfg80211_sar_specs *sar) +{ +struct mt76_phy *mphy = hw->priv; +int err; + +if (sar) { + err =mt76_init_sar_power (hw, sar); +if (err) +return err; + } + +mt7921_init_bios_sar_power (mt7921_hw_phy (hw), !sar);
Quoted 8 lines
drivers/net/wireless/mediatek/mt76/mt7921/main.c static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, · line 1490
Quoted 6 lines
drivers/net/wireless/mediatek/mt76/mt7921/main.c +6
-0+ + err =mt76_connac_mcu_set_rate_txpower (mphy); + +return err; +} +EXPORT_SYMBOL_GPL (mt7921_set_tx_sar_pwr);Why is this exported?
Thanks for pointing out. I will remove unnecessary export in next version.
Regards,
Deren
Quoted 7 lines
- Felix
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
Felix Fietkau
maintainerQuoted 8 lines · Deren Wu
From: Deren Wu <[email protected]>
Introduce BIOS SAR support for mt7921 serials.
Deren Wu (3):
mt76: add 6G band support inmt76_sar_freq_ranges
mt76: mt7921: introduce BIOS SAR support
mt76: mt7921: introduce BIOS SAR config in tx power
Please replace BIOS with ACPI throughout the patch.
Thanks,
- Felix
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek