blob: e560caf87b547a434da5cd8a309fb009da399675 [file] [log] [blame]
developer05f3b2b2024-08-19 19:17:34 +08001From 857348ab99cd5ba83f73c4da02c70f2004b6f10b Mon Sep 17 00:00:00 2001
developer66e89bc2024-04-23 14:50:01 +08002From: Howard Hsu <howard-yh.hsu@mediatek.com>
3Date: Thu, 4 Jan 2024 19:53:37 +0800
developer05f3b2b2024-08-19 19:17:34 +08004Subject: [PATCH 084/199] mtk: mt76: mt7996: support thermal recal debug
developer66e89bc2024-04-23 14:50:01 +08005 command
6
7Add support thermal recal debug command.
8
9Usage:
10$ echo val > debugfs/thermal_recal
11
12The val can be the following values:
130 = disable
141 = enable
152 = manual trigger
16
developer66e89bc2024-04-23 14:50:01 +080017Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
18---
19 mt76_connac_mcu.h | 1 +
20 mt7996/mt7996.h | 1 +
21 mt7996/mtk_debugfs.c | 17 +++++++++++++++++
22 mt7996/mtk_mcu.c | 21 +++++++++++++++++++++
23 4 files changed, 40 insertions(+)
24
25diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h
developer05f3b2b2024-08-19 19:17:34 +080026index c8eedf36..1589a716 100644
developer66e89bc2024-04-23 14:50:01 +080027--- a/mt76_connac_mcu.h
28+++ b/mt76_connac_mcu.h
developer05f3b2b2024-08-19 19:17:34 +080029@@ -1297,6 +1297,7 @@ enum {
developer66e89bc2024-04-23 14:50:01 +080030 MCU_UNI_CMD_TESTMODE_TRX_PARAM = 0x42,
31 MCU_UNI_CMD_TESTMODE_CTRL = 0x46,
32 MCU_UNI_CMD_PRECAL_RESULT = 0x47,
33+ MCU_UNI_CMD_THERMAL_CAL = 0x4c,
34 MCU_UNI_CMD_RRO = 0x57,
35 MCU_UNI_CMD_OFFCH_SCAN_CTRL = 0x58,
36 MCU_UNI_CMD_PER_STA_INFO = 0x6d,
37diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
developer05f3b2b2024-08-19 19:17:34 +080038index 6e96194b..0e6b7595 100644
developer66e89bc2024-04-23 14:50:01 +080039--- a/mt7996/mt7996.h
40+++ b/mt7996/mt7996.h
developer05f3b2b2024-08-19 19:17:34 +080041@@ -1033,6 +1033,7 @@ void mt7996_mcu_set_cert(struct mt7996_phy *phy, u8 type);
developer66e89bc2024-04-23 14:50:01 +080042 void mt7996_tm_update_channel(struct mt7996_phy *phy);
43
44 int mt7996_mcu_set_vow_drr_dbg(struct mt7996_dev *dev, u32 val);
45+int mt7996_mcu_thermal_debug(struct mt7996_dev *dev, u8 mode, u8 action);
46 #endif
47
48 #ifdef CONFIG_NET_MEDIATEK_SOC_WED
49diff --git a/mt7996/mtk_debugfs.c b/mt7996/mtk_debugfs.c
developer05f3b2b2024-08-19 19:17:34 +080050index 66ab74d2..cc1224ed 100644
developer66e89bc2024-04-23 14:50:01 +080051--- a/mt7996/mtk_debugfs.c
52+++ b/mt7996/mtk_debugfs.c
developer05f3b2b2024-08-19 19:17:34 +080053@@ -3171,6 +3171,22 @@ out:
developer66e89bc2024-04-23 14:50:01 +080054 DEFINE_DEBUGFS_ATTRIBUTE(fops_thermal_enable, mt7996_thermal_enable_get,
55 mt7996_thermal_enable_set, "%lld\n");
56
57+static int
58+mt7996_thermal_recal_set(void *data, u64 val)
59+{
60+#define THERMAL_DEBUG_OPERATION_MANUAL_TRIGGER 2
61+#define THERMAL_DEBUG_MODE_RECAL 1
62+ struct mt7996_dev *dev = data;
63+
64+ if (val > THERMAL_DEBUG_OPERATION_MANUAL_TRIGGER)
65+ return -EINVAL;
66+
67+ return mt7996_mcu_thermal_debug(dev, THERMAL_DEBUG_MODE_RECAL, val);
68+}
69+
70+DEFINE_DEBUGFS_ATTRIBUTE(fops_thermal_recal, NULL,
71+ mt7996_thermal_recal_set, "%llu\n");
72+
73 int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir)
74 {
75 struct mt7996_dev *dev = phy->dev;
developer05f3b2b2024-08-19 19:17:34 +080076@@ -3278,6 +3294,7 @@ int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir)
developer66e89bc2024-04-23 14:50:01 +080077 }
78
79 debugfs_create_file("thermal_enable", 0600, dir, phy, &fops_thermal_enable);
80+ debugfs_create_file("thermal_recal", 0200, dir, dev, &fops_thermal_recal);
81
82 return 0;
83 }
84diff --git a/mt7996/mtk_mcu.c b/mt7996/mtk_mcu.c
developer05f3b2b2024-08-19 19:17:34 +080085index 967ee874..809181e0 100644
developer66e89bc2024-04-23 14:50:01 +080086--- a/mt7996/mtk_mcu.c
87+++ b/mt7996/mtk_mcu.c
developer05f3b2b2024-08-19 19:17:34 +080088@@ -1343,4 +1343,25 @@ int mt7996_mcu_set_vow_drr_dbg(struct mt7996_dev *dev, u32 val)
developer66e89bc2024-04-23 14:50:01 +080089 sizeof(req), true);
90 }
91
92+int mt7996_mcu_thermal_debug(struct mt7996_dev *dev, u8 mode, u8 action)
93+{
94+ struct {
95+ u8 __rsv1[4];
96+
97+ __le16 tag;
98+ __le16 len;
99+
100+ u8 mode;
101+ u8 action;
102+ u8 __rsv2[2];
103+ } __packed req = {
104+ .tag = cpu_to_le16(mode),
105+ .len = cpu_to_le16(sizeof(req) - 4),
106+ .mode = mode,
107+ .action = action,
108+ };
109+
110+ return mt76_mcu_send_msg(&dev->mt76, MCU_WM_UNI_CMD(THERMAL_CAL), &req,
111+ sizeof(req), true);
112+}
113 #endif
114--
developer9237f442024-06-14 17:13:04 +08001152.18.0
developer66e89bc2024-04-23 14:50:01 +0800116