developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 1 | From 857348ab99cd5ba83f73c4da02c70f2004b6f10b Mon Sep 17 00:00:00 2001 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 2 | From: Howard Hsu <howard-yh.hsu@mediatek.com> |
| 3 | Date: Thu, 4 Jan 2024 19:53:37 +0800 |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 4 | Subject: [PATCH 084/199] mtk: mt76: mt7996: support thermal recal debug |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 5 | command |
| 6 | |
| 7 | Add support thermal recal debug command. |
| 8 | |
| 9 | Usage: |
| 10 | $ echo val > debugfs/thermal_recal |
| 11 | |
| 12 | The val can be the following values: |
| 13 | 0 = disable |
| 14 | 1 = enable |
| 15 | 2 = manual trigger |
| 16 | |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 17 | Signed-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 | |
| 25 | diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 26 | index c8eedf36..1589a716 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 27 | --- a/mt76_connac_mcu.h |
| 28 | +++ b/mt76_connac_mcu.h |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 29 | @@ -1297,6 +1297,7 @@ enum { |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 30 | 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, |
| 37 | diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 38 | index 6e96194b..0e6b7595 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 39 | --- a/mt7996/mt7996.h |
| 40 | +++ b/mt7996/mt7996.h |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 41 | @@ -1033,6 +1033,7 @@ void mt7996_mcu_set_cert(struct mt7996_phy *phy, u8 type); |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 42 | 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 |
| 49 | diff --git a/mt7996/mtk_debugfs.c b/mt7996/mtk_debugfs.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 50 | index 66ab74d2..cc1224ed 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 51 | --- a/mt7996/mtk_debugfs.c |
| 52 | +++ b/mt7996/mtk_debugfs.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 53 | @@ -3171,6 +3171,22 @@ out: |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 54 | 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; |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 76 | @@ -3278,6 +3294,7 @@ int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir) |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 77 | } |
| 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 | } |
| 84 | diff --git a/mt7996/mtk_mcu.c b/mt7996/mtk_mcu.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 85 | index 967ee874..809181e0 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 86 | --- a/mt7996/mtk_mcu.c |
| 87 | +++ b/mt7996/mtk_mcu.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame^] | 88 | @@ -1343,4 +1343,25 @@ int mt7996_mcu_set_vow_drr_dbg(struct mt7996_dev *dev, u32 val) |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 89 | 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 | -- |
developer | 9237f44 | 2024-06-14 17:13:04 +0800 | [diff] [blame] | 115 | 2.18.0 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 116 | |