blob: 90ce5bf57c56a7280bdd935032a17c9a29f68915 [file] [log] [blame]
developer9237f442024-06-14 17:13:04 +08001From 4ced99d2b25f8804f194317675f3a7cce0f493b2 Mon Sep 17 00:00:00 2001
developer66e89bc2024-04-23 14:50:01 +08002From: Howard Hsu <howard-yh.hsu@mediatek.com>
3Date: Thu, 27 Jul 2023 19:35:32 +0800
developer9237f442024-06-14 17:13:04 +08004Subject: [PATCH 078/116] mtk: wifi: mt76: mt7996: support enable/disable
developer66e89bc2024-04-23 14:50:01 +08005 thermal protection mechanism
6
7This commit adds a new debugfs thermal_enable to enable/disable thermal
8protection mechanism. The purpose of this commit is for autotest to
9verify thermal protection mechanism.
10
11[Usage]
12Enable thermal protection: echo 1 > thermal_enable
13Disable thermal protection: echo 0 > thermal_enable
14
15Please note that if you re-enable thermal protection mechanism, all the
16configuration values will be retained from the exising configuration,
17rather than using the default values.
18
19Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
20---
21 mt7996/main.c | 1 +
22 mt7996/mt7996.h | 1 +
23 mt7996/mtk_debugfs.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
24 3 files changed, 47 insertions(+)
25
26diff --git a/mt7996/main.c b/mt7996/main.c
developer9237f442024-06-14 17:13:04 +080027index 1894588..775d81e 100644
developer66e89bc2024-04-23 14:50:01 +080028--- a/mt7996/main.c
29+++ b/mt7996/main.c
30@@ -91,6 +91,7 @@ int mt7996_run(struct ieee80211_hw *hw)
31 #ifdef CONFIG_MTK_DEBUG
32 phy->sr_enable = true;
33 phy->enhanced_sr_enable = true;
34+ phy->thermal_protection_enable = true;
35
36 ret = mt7996_mcu_set_tx_power_ctrl(phy, UNI_TXPOWER_SKU_POWER_LIMIT_CTRL,
37 dev->dbg.sku_disable ? 0 : phy->sku_limit_en);
38diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
developer9237f442024-06-14 17:13:04 +080039index 3f1f9b3..3069e90 100644
developer66e89bc2024-04-23 14:50:01 +080040--- a/mt7996/mt7996.h
41+++ b/mt7996/mt7996.h
42@@ -488,6 +488,7 @@ struct mt7996_phy {
43 #ifdef CONFIG_MTK_DEBUG
44 bool sr_enable:1;
45 bool enhanced_sr_enable:1;
46+ bool thermal_protection_enable:1;
47 #endif
48 };
49
50diff --git a/mt7996/mtk_debugfs.c b/mt7996/mtk_debugfs.c
developer9237f442024-06-14 17:13:04 +080051index dab5b23..de21a95 100644
developer66e89bc2024-04-23 14:50:01 +080052--- a/mt7996/mtk_debugfs.c
53+++ b/mt7996/mtk_debugfs.c
54@@ -3169,6 +3169,49 @@ mt7996_show_rro_mib(struct seq_file *s, void *data)
55 return 0;
56 }
57
58+static int
59+mt7996_thermal_enable_get(void *data, u64 *enable)
60+{
61+ struct mt7996_phy *phy = data;
62+
63+ *enable = phy->thermal_protection_enable;
64+
65+ return 0;
66+}
67+
68+static int
69+mt7996_thermal_enable_set(void *data, u64 action)
70+{
71+ struct mt7996_phy *phy = data;
72+ int ret;
73+ u8 throttling;
74+
75+ if (action > 1)
76+ return -EINVAL;
77+
78+ if (!!action == phy->thermal_protection_enable)
79+ return 0;
80+
81+ ret = mt7996_mcu_set_thermal_protect(phy, !!action);
82+ if (ret)
83+ return ret;
84+
85+ if (!!!action)
86+ goto out;
87+
88+ throttling = MT7996_THERMAL_THROTTLE_MAX - phy->cdev_state;
89+ ret = mt7996_mcu_set_thermal_throttling(phy, throttling);
90+ if (ret)
91+ return ret;
92+
93+out:
94+ phy->thermal_protection_enable = !!action;
95+
96+ return 0;
97+}
98+DEFINE_DEBUGFS_ATTRIBUTE(fops_thermal_enable, mt7996_thermal_enable_get,
99+ mt7996_thermal_enable_set, "%lld\n");
100+
101 int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir)
102 {
103 struct mt7996_dev *dev = phy->dev;
104@@ -3276,6 +3319,8 @@ int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir)
105 mt7996_show_rro_mib);
106 }
107
108+ debugfs_create_file("thermal_enable", 0600, dir, phy, &fops_thermal_enable);
109+
110 return 0;
111 }
112
113--
developer9237f442024-06-14 17:13:04 +08001142.18.0
developer66e89bc2024-04-23 14:50:01 +0800115