From 10df4848e7a7116529e1f596e06d0d03891f502e Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Thu, 20 Jul 2023 17:27:22 +0800
Subject: [PATCH 37/98] wifi: mt76: mt7996: add eagle default bin of different
 sku variants

Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
 mt7996/eeprom.c |  2 ++
 mt7996/init.c   |  4 ++++
 mt7996/mt7996.h | 28 ++++++++++++++++++++++++++--
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/mt7996/eeprom.c b/mt7996/eeprom.c
index 7fd318c..3276740 100644
--- a/mt7996/eeprom.c
+++ b/mt7996/eeprom.c
@@ -30,6 +30,8 @@ static char *mt7996_eeprom_name(struct mt7996_dev *dev)
 	/* reserve for future variants */
 	if (dev->testmode_enable)
 		return MT7996_EEPROM_DEFAULT_TM;
+	else if (dev->chip_sku == MT7996_SKU_404)
+		return MT7996_EEPROM_DEFAULT_404;
 	else
 		return MT7996_EEPROM_DEFAULT;
 }
diff --git a/mt7996/init.c b/mt7996/init.c
index 6d39c3c..fed74d0 100644
--- a/mt7996/init.c
+++ b/mt7996/init.c
@@ -789,6 +789,10 @@ static int mt7996_init_hardware(struct mt7996_dev *dev)
 
 	INIT_WORK(&dev->init_work, mt7996_init_work);
 
+	ret = mt7996_get_chip_sku(dev);
+	if (ret)
+		return ret;
+
 	dev->dbdc_support = mt7996_band_valid(dev, MT_BAND1) ||
 			    mt7996_band_valid(dev, MT_BAND2);
 	dev->tbtc_support = mt7996_band_valid(dev, MT_BAND1) &&
diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
index 3964035..efdcff7 100644
--- a/mt7996/mt7996.h
+++ b/mt7996/mt7996.h
@@ -36,6 +36,7 @@
 #define MT7996_ROM_PATCH		"mediatek/mt7996/mt7996_rom_patch.bin"
 
 #define MT7996_EEPROM_DEFAULT		"mediatek/mt7996/mt7996_eeprom.bin"
+#define MT7996_EEPROM_DEFAULT_404	"mediatek/mt7996/mt7996_eeprom_dual_404.bin"
 #define MT7996_EEPROM_DEFAULT_TM	"mediatek/mt7996/mt7996_eeprom_tm.bin"
 #define MT7996_EEPROM_SIZE		7680
 #define MT7996_EEPROM_BLOCK_SIZE	16
@@ -83,6 +84,11 @@ struct mt7996_sta;
 struct mt7996_dfs_pulse;
 struct mt7996_dfs_pattern;
 
+enum mt7996_sku_type {
+	MT7996_SKU_404,
+	MT7996_SKU_444,
+};
+
 enum mt7996_ram_type {
 	MT7996_RAM_TYPE_WM,
 	MT7996_RAM_TYPE_WM_TM = MT7996_RAM_TYPE_WM,
@@ -264,6 +270,8 @@ struct mt7996_dev {
 	struct cfg80211_chan_def rdd2_chandef;
 	struct mt7996_phy *rdd2_phy;
 
+	u8 chip_sku;
+
 	u16 chainmask;
 	u8 chainshift[__MT_MAX_BAND];
 	u32 hif_idx;
@@ -417,6 +425,23 @@ mt7996_phy3(struct mt7996_dev *dev)
 	return __mt7996_phy(dev, MT_BAND2);
 }
 
+static inline int
+mt7996_get_chip_sku(struct mt7996_dev *dev)
+{
+	u32 val = mt76_rr(dev, MT_PAD_GPIO);
+
+	/* reserve for future variants */
+	switch (mt76_chip(&dev->mt76)) {
+	case 0x7990:
+		dev->chip_sku = FIELD_GET(MT_PAD_GPIO_ADIE_COMB, val) <= 1;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
 static inline bool
 mt7996_band_valid(struct mt7996_dev *dev, u8 band)
 {
@@ -424,8 +449,7 @@ mt7996_band_valid(struct mt7996_dev *dev, u8 band)
 		return band <= MT_BAND1;
 
 	/* tri-band support */
-	if (band <= MT_BAND2 &&
-	    mt76_get_field(dev, MT_PAD_GPIO, MT_PAD_GPIO_ADIE_COMB) <= 1)
+	if (band <= MT_BAND2 && dev->chip_sku)
 		return true;
 
 	return band == MT_BAND0 || band == MT_BAND2;
-- 
2.18.0

