[][MAC80211][External release build]
[Description]
Add external release build flow
[Release-log]
N/A
Change-Id: I9e7f99d972dec580eff7b50f18f1a0bc90487e4d
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/5687836
diff --git a/autobuild_mac80211_release/mt7986_mac80211/package/kernel/mt76/patches/0010-mt76-mt7915-fix-eeprom-fields-of-txpower-init-values.patch b/autobuild_mac80211_release/mt7986_mac80211/package/kernel/mt76/patches/0010-mt76-mt7915-fix-eeprom-fields-of-txpower-init-values.patch
new file mode 100644
index 0000000..24cc488
--- /dev/null
+++ b/autobuild_mac80211_release/mt7986_mac80211/package/kernel/mt76/patches/0010-mt76-mt7915-fix-eeprom-fields-of-txpower-init-values.patch
@@ -0,0 +1,128 @@
+From 1bf24a0f752e0e2effc0e5ffc2e641383b320d96 Mon Sep 17 00:00:00 2001
+From: Shayne Chen <shayne.chen@mediatek.com>
+Date: Mon, 14 Feb 2022 17:51:08 +0800
+Subject: [PATCH 10/11] mt76: mt7915: fix eeprom fields of txpower init values
+
+7976 adie has different offset and uses different channel group
+definition on txpower init value.
+
+Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
+---
+ .../wireless/mediatek/mt76/mt7915/eeprom.c | 52 ++++++++++---------
+ .../wireless/mediatek/mt76/mt7915/eeprom.h | 14 ++++-
+ 2 files changed, 40 insertions(+), 26 deletions(-)
+
+diff --git a/mt7915/eeprom.c b/mt7915/eeprom.c
+index bbd9bef..0aab381 100644
+--- a/mt7915/eeprom.c
++++ b/mt7915/eeprom.c
+@@ -263,32 +263,38 @@ int mt7915_eeprom_get_target_power(struct mt7915_dev *dev,
+ {
+ u8 *eeprom = dev->mt76.eeprom.data;
+ int index, target_power;
+- bool tssi_on;
++ bool tssi_on, is_7976;
+
+ if (chain_idx > 3)
+ return -EINVAL;
+
+ tssi_on = mt7915_tssi_enabled(dev, chan->band);
++ is_7976 = mt7915_check_adie(dev, false) || is_mt7916(&dev->mt76);
+
+ if (chan->band == NL80211_BAND_2GHZ) {
+- u32 power = is_mt7915(&dev->mt76) ?
+- MT_EE_TX0_POWER_2G : MT_EE_TX0_POWER_2G_V2;
+-
+- index = power + chain_idx * 3;
+- target_power = eeprom[index];
++ if (is_7976) {
++ index = MT_EE_TX0_POWER_2G_V2 + chain_idx;
++ target_power = eeprom[index];
++ } else {
++ index = MT_EE_TX0_POWER_2G + chain_idx * 3;
++ target_power = eeprom[index];
+
+- if (!tssi_on)
+- target_power += eeprom[index + 1];
++ if (!tssi_on)
++ target_power += eeprom[index + 1];
++ }
+ } else {
+- int group = mt7915_get_channel_group(chan->hw_value);
+- u32 power = is_mt7915(&dev->mt76) ?
+- MT_EE_TX0_POWER_5G : MT_EE_TX0_POWER_5G_V2;
++ int group = mt7915_get_channel_group(chan->hw_value, is_7976);
+
+- index = power + chain_idx * 12;
+- target_power = eeprom[index + group];
++ if (is_7976) {
++ index = MT_EE_TX0_POWER_5G_V2 + chain_idx * 5;
++ target_power = eeprom[index + group];
++ } else {
++ index = MT_EE_TX0_POWER_5G + chain_idx * 12;
++ target_power = eeprom[index + group];
+
+- if (!tssi_on)
+- target_power += eeprom[index + 8];
++ if (!tssi_on)
++ target_power += eeprom[index + 8];
++ }
+ }
+
+ return target_power;
+@@ -297,20 +303,16 @@ int mt7915_eeprom_get_target_power(struct mt7915_dev *dev,
+ s8 mt7915_eeprom_get_power_delta(struct mt7915_dev *dev, int band)
+ {
+ u8 *eeprom = dev->mt76.eeprom.data;
+- u32 val;
++ u32 val, offs;
+ s8 delta;
+- u32 rate_2g, rate_5g;
+-
+- rate_2g = is_mt7915(&dev->mt76) ?
+- MT_EE_RATE_DELTA_2G : MT_EE_RATE_DELTA_2G_V2;
+-
+- rate_5g = is_mt7915(&dev->mt76) ?
+- MT_EE_RATE_DELTA_5G : MT_EE_RATE_DELTA_5G_V2;
++ bool is_7976 = mt7915_check_adie(dev, false) || is_mt7916(&dev->mt76);
+
+ if (band == NL80211_BAND_2GHZ)
+- val = eeprom[rate_2g];
++ offs = is_7976 ? MT_EE_RATE_DELTA_2G_V2 : MT_EE_RATE_DELTA_2G;
+ else
+- val = eeprom[rate_5g];
++ offs = is_7976 ? MT_EE_RATE_DELTA_5G_V2 : MT_EE_RATE_DELTA_5G;
++
++ val = eeprom[offs];
+
+ if (!(val & MT_EE_RATE_DELTA_EN))
+ return 0;
+diff --git a/mt7915/eeprom.h b/mt7915/eeprom.h
+index 5dad5b0..4576091 100644
+--- a/mt7915/eeprom.h
++++ b/mt7915/eeprom.h
+@@ -103,8 +103,20 @@ enum mt7915_sku_rate_group {
+ };
+
+ static inline int
+-mt7915_get_channel_group(int channel)
++mt7915_get_channel_group(int channel, bool is_7976)
+ {
++ if (is_7976) {
++ if (channel <= 64)
++ return 0;
++ if (channel <= 96)
++ return 1;
++ if (channel <= 128)
++ return 2;
++ if (channel <= 144)
++ return 3;
++ return 4;
++ }
++
+ if (channel >= 184 && channel <= 196)
+ return 0;
+ if (channel <= 48)
+--
+2.25.1
+