From 14b505d62c856f210ce46e831886ae0fab253252 Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Tue, 31 Oct 2023 16:29:13 +0800
Subject: [PATCH] wifi: mt76: testmode: add cheetah support

Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
 mt7915/eeprom.c   |  3 +--
 mt7915/eeprom.h   | 12 ++++++++++++
 mt7915/mcu.c      | 21 +++++++++++++++++++--
 mt7915/testmode.c |  9 +++++----
 4 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/mt7915/eeprom.c b/mt7915/eeprom.c
index f8166dd..50ed7ba 100644
--- a/mt7915/eeprom.c
+++ b/mt7915/eeprom.c
@@ -39,8 +39,7 @@ static int mt7915_eeprom_load_precal(struct mt7915_dev *dev)
 	if (!dev->flash_mode || !val)
 		return 0;
 
-	size = mt7915_get_cal_group_size(dev) +
-	       (is_mt7915(&dev->mt76) ? MT_EE_CAL_DPD_SIZE_V1 : MT_EE_CAL_DPD_SIZE_V2);
+	size = mt7915_get_cal_group_size(dev) + mt7915_get_cal_dpd_size(dev);
 
 	dev->cal = devm_kzalloc(mdev->dev, size, GFP_KERNEL);
 	if (!dev->cal)
diff --git a/mt7915/eeprom.h b/mt7915/eeprom.h
index a1ab05a..99101f9 100644
--- a/mt7915/eeprom.h
+++ b/mt7915/eeprom.h
@@ -52,6 +52,7 @@ enum mt7915_eeprom_field {
 #define MT_EE_CAL_GROUP_SIZE_7916_6G		(94 * MT_EE_CAL_UNIT + 16)
 #define MT_EE_CAL_DPD_SIZE_V1			(54 * MT_EE_CAL_UNIT)
 #define MT_EE_CAL_DPD_SIZE_V2			(300 * MT_EE_CAL_UNIT)
+#define MT_EE_CAL_DPD_SIZE_V2_7981		(102 * MT_EE_CAL_UNIT)	/* no 6g dpd data */
 
 #define MT_EE_WIFI_CONF0_TX_PATH		GENMASK(2, 0)
 #define MT_EE_WIFI_CONF0_BAND_SEL		GENMASK(7, 6)
@@ -192,6 +193,17 @@ mt7915_get_cal_group_size(struct mt7915_dev *dev)
 	}
 }
 
+static inline u32
+mt7915_get_cal_dpd_size(struct mt7915_dev *dev)
+{
+	if (is_mt7915(&dev->mt76))
+		return MT_EE_CAL_DPD_SIZE_V1;
+	else if (is_mt7981(&dev->mt76))
+		return MT_EE_CAL_DPD_SIZE_V2_7981;
+	else
+		return MT_EE_CAL_DPD_SIZE_V2;
+}
+
 extern const u8 mt7915_sku_group_len[MAX_SKU_RATE_GROUP_NUM];
 
 #endif
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
index cd4f472..492cfcd 100644
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -3035,13 +3035,30 @@ static int mt7915_dpd_freq_idx(struct mt7915_dev *dev, u16 freq, u8 bw)
 		/* 5G BW160 */
 		5250, 5570, 5815
 	};
+	const u16 freq_list_v2_7981[] = {
+		/* 5G BW20 */
+		5180, 5200, 5220, 5240,
+		5260, 5280, 5300, 5320,
+		5500, 5520, 5540, 5560,
+		5580, 5600, 5620, 5640,
+		5660, 5680, 5700, 5720,
+		5745, 5765, 5785, 5805,
+		5825, 5845, 5865, 5885,
+		/* 5G BW160 */
+		5250, 5570, 5815
+	};
 	const u16 *freq_list = freq_list_v1;
 	int n_freqs = ARRAY_SIZE(freq_list_v1);
 	int idx;
 
 	if (!is_mt7915(&dev->mt76)) {
-		freq_list = freq_list_v2;
-		n_freqs = ARRAY_SIZE(freq_list_v2);
+		if (is_mt7981(&dev->mt76)) {
+			freq_list = freq_list_v2_7981;
+			n_freqs = ARRAY_SIZE(freq_list_v2_7981);
+		} else {
+			freq_list = freq_list_v2;
+			n_freqs = ARRAY_SIZE(freq_list_v2);
+		}
 	}
 
 	if (freq < 4000) {
diff --git a/mt7915/testmode.c b/mt7915/testmode.c
index 5e20cb9..4aa7eb6 100644
--- a/mt7915/testmode.c
+++ b/mt7915/testmode.c
@@ -2149,7 +2149,7 @@ mt7915_tm_group_prek(struct mt7915_phy *phy, enum mt76_testmode_state state)
 	eeprom = mdev->eeprom.data;
 	dev->cur_prek_offset = 0;
 	group_size = mt7915_get_cal_group_size(dev);
-	dpd_size = is_mt7915(&dev->mt76) ? MT_EE_CAL_DPD_SIZE_V1 : MT_EE_CAL_DPD_SIZE_V2;
+	dpd_size = mt7915_get_cal_dpd_size(dev);
 	size = group_size + dpd_size;
 	offs = is_mt7915(&dev->mt76) ? MT_EE_DO_PRE_CAL : MT_EE_DO_PRE_CAL_V2;
 
@@ -2231,11 +2231,11 @@ mt7915_tm_dpd_prek(struct mt7915_phy *phy, enum mt76_testmode_state state)
 	eeprom = mdev->eeprom.data;
 	dev->cur_prek_offset = 0;
 	group_size = mt7915_get_cal_group_size(dev);
+	dpd_size = mt7915_get_cal_dpd_size(dev);
 	dev->dpd_chan_num_2g = hweight32(DPD_2G_CH_BW20_BITMAP_0);
 	if (is_mt7915(&dev->mt76)) {
 		dev->dpd_chan_num_5g = hweight32(DPD_5G_CH_BW20_BITMAP_7915_0);
 		dev->dpd_chan_num_6g = 0;
-		dpd_size = MT_EE_CAL_DPD_SIZE_V1;
 		offs = MT_EE_DO_PRE_CAL;
 	} else {
 		dev->dpd_chan_num_5g = hweight32(DPD_5G_CH_BW20_BITMAP_0) +
@@ -2244,7 +2244,8 @@ mt7915_tm_dpd_prek(struct mt7915_phy *phy, enum mt76_testmode_state state)
 		dev->dpd_chan_num_6g = hweight32(DPD_6G_CH_BW20_BITMAP_0) +
 				       hweight32(DPD_6G_CH_BW20_BITMAP_1) +
 				       ARRAY_SIZE(bw160_6g_freq);
-		dpd_size = MT_EE_CAL_DPD_SIZE_V2;
+		if (is_mt7981(&dev->mt76))
+			dev->dpd_chan_num_6g = 0;
 		offs = MT_EE_DO_PRE_CAL_V2;
 	}
 	size = group_size + dpd_size;
@@ -2707,7 +2708,7 @@ mt7915_tm_dump_precal(struct mt76_phy *mphy, struct sk_buff *msg, int flag, int
 	}
 
 	group_size = mt7915_get_cal_group_size(dev);
-	dpd_size = is_mt7915(&dev->mt76) ? MT_EE_CAL_DPD_SIZE_V1 : MT_EE_CAL_DPD_SIZE_V2;
+	dpd_size = mt7915_get_cal_dpd_size(dev);
 	dpd_per_chan_size = is_mt7915(&dev->mt76) ? 2 : 3;
 	total_size = group_size + dpd_size;
 	pre_cal = dev->cal;
-- 
2.18.0

