[][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
+