From d80ebefaf1030b53589c5f17d58462ec9cea5ad8 Mon Sep 17 00:00:00 2001
From: Rex Lu <rex.lu@mediatek.com>
Date: Mon, 25 Dec 2023 15:17:49 +0800
Subject: [PATCH 1017/1044] mtk: wifi: mt76: mt7996: Add mt7992 coredump
 support

1. Add mt7992 coredump support
2. fixed if new ic have not support coredump, it may cause crash when remove module

Signed-off-by: Rex Lu <rex.lu@mediatek.com>
---
 mt7996/coredump.c | 80 ++++++++++++++++++++++++++++++++++++++---------
 mt7996/mt7996.h   |  1 +
 2 files changed, 67 insertions(+), 14 deletions(-)

diff --git a/mt7996/coredump.c b/mt7996/coredump.c
index a7f91b56..d09bcd4b 100644
--- a/mt7996/coredump.c
+++ b/mt7996/coredump.c
@@ -67,6 +67,44 @@ static const struct mt7996_mem_region mt7996_wa_mem_regions[] = {
 	},
 };
 
+static const struct mt7996_mem_region mt7992_wm_mem_regions[] = {
+	{
+		.start = 0x00800000,
+		.len = 0x0004bfff,
+		.name = "ULM0",
+	},
+	{
+		.start = 0x00900000,
+		.len = 0x00035fff,
+		.name = "ULM1",
+	},
+	{
+		.start = 0x02200000,
+		.len = 0x0003ffff,
+		.name = "ULM2",
+	},
+	{
+		.start = 0x00400000,
+		.len = 0x00027fff,
+		.name = "SRAM",
+	},
+	{
+		.start = 0xe0000000,
+		.len = 0x0015ffff,
+		.name = "CRAM0",
+	},
+	{
+		.start = 0xe0160000,
+		.len = 0x00c7fff,
+		.name = "CRAM1",
+	},
+	{
+		.start = 0x7c050000,
+		.len = 0x00007fff,
+		.name = "CONN_INFRA",
+	},
+};
+
 const struct mt7996_mem_region*
 mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u8 type, u32 *num)
 {
@@ -80,6 +118,14 @@ mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u8 type, u32 *num)
 
 		*num = ARRAY_SIZE(mt7996_wm_mem_regions);
 		return &mt7996_wm_mem_regions[0];
+	case 0x7992:
+		if (type == MT7996_RAM_TYPE_WA) {
+			/* mt7992 wa memory regions is the same as mt7996 */
+			*num = ARRAY_SIZE(mt7996_wa_mem_regions);
+			return &mt7996_wa_mem_regions[0];
+		}
+		*num = ARRAY_SIZE(mt7992_wm_mem_regions);
+		return &mt7992_wm_mem_regions[0];
 	default:
 		return NULL;
 	}
@@ -115,7 +161,7 @@ struct mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev, u8 type)
 
 	lockdep_assert_held(&dev->dump_mutex);
 
-	if (!coredump_memdump)
+	if (!coredump_memdump || !crash_data->supported)
 		return NULL;
 
 	guid_gen(&crash_data->guid);
@@ -289,40 +335,46 @@ int mt7996_coredump_register(struct mt7996_dev *dev)
 	for (i = 0; i < MT7996_COREDUMP_MAX; i++) {
 		crash_data = vzalloc(sizeof(*dev->coredump.crash_data[i]));
 		if (!crash_data)
-			return -ENOMEM;
+			goto nomem;
 
 		dev->coredump.crash_data[i] = crash_data;
+		crash_data->supported = false;
 
 		if (coredump_memdump) {
 			crash_data->memdump_buf_len = mt7996_coredump_get_mem_size(dev, i);
 			if (!crash_data->memdump_buf_len)
 				/* no memory content */
-				return 0;
+				continue;
 
 			crash_data->memdump_buf = vzalloc(crash_data->memdump_buf_len);
-			if (!crash_data->memdump_buf) {
-				vfree(crash_data);
-				return -ENOMEM;
-			}
+			if (!crash_data->memdump_buf)
+				goto nomem;
+
+			crash_data->supported = true;
 		}
 	}
 
 	return 0;
+nomem:
+	mt7996_coredump_unregister(dev);
+	return -ENOMEM;
 }
 
 void mt7996_coredump_unregister(struct mt7996_dev *dev)
 {
 	int i;
+	struct mt7996_crash_data *crash_data;
 
 	for (i = 0; i < MT7996_COREDUMP_MAX; i++) {
-		if (dev->coredump.crash_data[i]->memdump_buf) {
-			vfree(dev->coredump.crash_data[i]->memdump_buf);
-			dev->coredump.crash_data[i]->memdump_buf = NULL;
-			dev->coredump.crash_data[i]->memdump_buf_len = 0;
-		}
+		crash_data = dev->coredump.crash_data[i];
+
+		if (!crash_data)
+			continue;
+
+		if (crash_data->memdump_buf)
+			vfree(crash_data->memdump_buf);
 
-		vfree(dev->coredump.crash_data[i]);
-		dev->coredump.crash_data[i] = NULL;
+		vfree(crash_data);
 	}
 }
 
diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
index dd9aa9e2..7ca9d57e 100644
--- a/mt7996/mt7996.h
+++ b/mt7996/mt7996.h
@@ -230,6 +230,7 @@ struct mt7996_vif {
 struct mt7996_crash_data {
 	guid_t guid;
 	struct timespec64 timestamp;
+	bool supported;
 
 	u8 *memdump_buf;
 	size_t memdump_buf_len;
-- 
2.18.0

