From fca9ad7a70a36d78f4ef977aa1fc179e4a0881d3 Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Thu, 13 Oct 2022 13:22:05 +0800
Subject: [PATCH] mt76: mt7915: add E3 re-bonding for low yield rate issue

Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
 mt7915/eeprom.c | 27 ++++++++++++++++++++++++++-
 mt7915/mcu.c    | 13 ++++++++++---
 mt7915/mt7915.h |  3 ++-
 3 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/mt7915/eeprom.c b/mt7915/eeprom.c
index 632ecc7..34a4a62 100644
--- a/mt7915/eeprom.c
+++ b/mt7915/eeprom.c
@@ -133,7 +133,7 @@ static int mt7915_eeprom_load(struct mt7915_dev *dev)
 					 MT7915_EEPROM_BLOCK_SIZE);
 		for (i = 0; i < block_num; i++)
 			mt7915_mcu_get_eeprom(dev,
-					      i * MT7915_EEPROM_BLOCK_SIZE);
+					      i * MT7915_EEPROM_BLOCK_SIZE, NULL);
 	}
 
 	return mt7915_check_eeprom(dev);
@@ -230,6 +230,29 @@ void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev,
 	dev->chainshift = hweight8(dev->mphy.chainmask);
 }
 
+void mt7915_eeprom_rebonding(struct mt7915_dev *dev)
+{
+#define MT7976_ADIE_MASK			BIT(1)
+#define MT7986_ADIE1_EFFUSE_OFFSET		0x1000
+#define MT7986_ADIE1_MT7976C_OFFSET		0x270
+#define MT7986_ADIE1_E3_OFFSET			0x271
+	u32 adie_offset, sku = mt7915_check_adie(dev, true);
+	u8 read_buf, *eeprom = dev->mt76.eeprom.data;
+
+	if (!(sku & MT7976_ADIE_MASK))
+		return;
+
+	adie_offset = (sku == MT7976_DUAL_ADIE) ? MT7986_ADIE1_EFFUSE_OFFSET : 0;
+
+	/* 7976 A-Die, To identify MT7976C */
+	mt7915_mcu_get_eeprom(dev, MT7986_ADIE1_MT7976C_OFFSET + adie_offset, &read_buf);
+	eeprom[MT7986_ADIE1_MT7976C_OFFSET] = read_buf;
+
+	/* E3 re-binding */
+	mt7915_mcu_get_eeprom(dev, MT7986_ADIE1_E3_OFFSET + adie_offset, &read_buf);
+	eeprom[MT7986_ADIE1_E3_OFFSET] = read_buf;
+}
+
 int mt7915_eeprom_init(struct mt7915_dev *dev)
 {
 	int ret;
@@ -263,6 +286,8 @@ int mt7915_eeprom_init(struct mt7915_dev *dev)
 			return ret;
 	}
 
+	mt7915_eeprom_rebonding(dev);
+
 	ret = mt7915_eeprom_load_precal(dev);
 	if (ret)
 		return ret;
diff --git a/mt7915/mcu.c b/mt7915/mcu.c
index a3600c7..7fc24e6 100644
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -2881,7 +2881,7 @@ int mt7915_mcu_set_eeprom(struct mt7915_dev *dev, bool flash_mode)
 				 &req, sizeof(req), true);
 }
 
-int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset)
+int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset, u8 *read_buf)
 {
 	struct mt7915_mcu_eeprom_info req = {
 		.addr = cpu_to_le32(round_down(offset,
@@ -2898,8 +2898,15 @@ int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset)
 		return ret;
 
 	res = (struct mt7915_mcu_eeprom_info *)skb->data;
-	buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
-	memcpy(buf, res->data, MT7915_EEPROM_BLOCK_SIZE);
+
+	if (read_buf) {
+		u32 offs = offset % MT7915_EEPROM_BLOCK_SIZE;
+		*read_buf = res->data[offs];
+	} else {
+		buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
+		memcpy(buf, res->data, MT7915_EEPROM_BLOCK_SIZE);
+	}
+
 	dev_kfree_skb(skb);
 
 	return 0;
diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h
index 217a5d4..ac3f476 100644
--- a/mt7915/mt7915.h
+++ b/mt7915/mt7915.h
@@ -552,6 +552,7 @@ void mt7915_wed_update_wo_rxcnt(struct mtk_wed_device *wed,
 				struct wo_cmd_rxcnt_t *rxcnt);
 int mt7915_register_device(struct mt7915_dev *dev);
 void mt7915_unregister_device(struct mt7915_dev *dev);
+void mt7915_eeprom_rebonding(struct mt7915_dev *dev);
 int mt7915_eeprom_init(struct mt7915_dev *dev);
 void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev,
 				struct mt7915_phy *phy);
@@ -606,7 +607,7 @@ int mt7915_mcu_set_fixed_rate_ctrl(struct mt7915_dev *dev,
 				   struct ieee80211_sta *sta,
 				   void *data, u32 field);
 int mt7915_mcu_set_eeprom(struct mt7915_dev *dev, bool flash_mode);
-int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset);
+int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset, u8 *read_buf);
 int mt7915_mcu_get_eeprom_free_block(struct mt7915_dev *dev, u8 *block_num);
 int mt7915_mcu_set_mac(struct mt7915_dev *dev, int band, bool enable,
 		       bool hdr_trans);
-- 
2.18.0

