developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 1 | From 3ee40687fd7064508306f1008c14433ccf7253d4 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 | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 4 | Subject: [PATCH 072/223] 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 | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 17 | Change-Id: Ief064633dd7ab0faeb298ac3902ca1b399e70365 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 18 | Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com> |
| 19 | --- |
| 20 | mt76_connac_mcu.h | 1 + |
| 21 | mt7996/mt7996.h | 1 + |
| 22 | mt7996/mtk_debugfs.c | 17 +++++++++++++++++ |
| 23 | mt7996/mtk_mcu.c | 21 +++++++++++++++++++++ |
| 24 | 4 files changed, 40 insertions(+) |
| 25 | |
| 26 | diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 27 | index c9cea5bb..11a1224a 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 28 | --- a/mt76_connac_mcu.h |
| 29 | +++ b/mt76_connac_mcu.h |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 30 | @@ -1302,6 +1302,7 @@ enum { |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 31 | MCU_UNI_CMD_TESTMODE_TRX_PARAM = 0x42, |
| 32 | MCU_UNI_CMD_TESTMODE_CTRL = 0x46, |
| 33 | MCU_UNI_CMD_PRECAL_RESULT = 0x47, |
| 34 | + MCU_UNI_CMD_THERMAL_CAL = 0x4c, |
| 35 | MCU_UNI_CMD_RRO = 0x57, |
| 36 | MCU_UNI_CMD_OFFCH_SCAN_CTRL = 0x58, |
| 37 | MCU_UNI_CMD_PER_STA_INFO = 0x6d, |
| 38 | diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 39 | index 94735872..82ff4e99 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 40 | --- a/mt7996/mt7996.h |
| 41 | +++ b/mt7996/mt7996.h |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 42 | @@ -1037,6 +1037,7 @@ void mt7996_mcu_set_cert(struct mt7996_phy *phy, u8 type); |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 43 | void mt7996_tm_update_channel(struct mt7996_phy *phy); |
| 44 | |
| 45 | int mt7996_mcu_set_vow_drr_dbg(struct mt7996_dev *dev, u32 val); |
| 46 | +int mt7996_mcu_thermal_debug(struct mt7996_dev *dev, u8 mode, u8 action); |
| 47 | #endif |
| 48 | |
| 49 | #ifdef CONFIG_NET_MEDIATEK_SOC_WED |
| 50 | diff --git a/mt7996/mtk_debugfs.c b/mt7996/mtk_debugfs.c |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 51 | index 196038d4..bc9a0f04 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 52 | --- a/mt7996/mtk_debugfs.c |
| 53 | +++ b/mt7996/mtk_debugfs.c |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 54 | @@ -3170,6 +3170,22 @@ out: |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 55 | DEFINE_DEBUGFS_ATTRIBUTE(fops_thermal_enable, mt7996_thermal_enable_get, |
| 56 | mt7996_thermal_enable_set, "%lld\n"); |
| 57 | |
| 58 | +static int |
| 59 | +mt7996_thermal_recal_set(void *data, u64 val) |
| 60 | +{ |
| 61 | +#define THERMAL_DEBUG_OPERATION_MANUAL_TRIGGER 2 |
| 62 | +#define THERMAL_DEBUG_MODE_RECAL 1 |
| 63 | + struct mt7996_dev *dev = data; |
| 64 | + |
| 65 | + if (val > THERMAL_DEBUG_OPERATION_MANUAL_TRIGGER) |
| 66 | + return -EINVAL; |
| 67 | + |
| 68 | + return mt7996_mcu_thermal_debug(dev, THERMAL_DEBUG_MODE_RECAL, val); |
| 69 | +} |
| 70 | + |
| 71 | +DEFINE_DEBUGFS_ATTRIBUTE(fops_thermal_recal, NULL, |
| 72 | + mt7996_thermal_recal_set, "%llu\n"); |
| 73 | + |
| 74 | int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir) |
| 75 | { |
| 76 | struct mt7996_dev *dev = phy->dev; |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 77 | @@ -3277,6 +3293,7 @@ int mt7996_mtk_init_debugfs(struct mt7996_phy *phy, struct dentry *dir) |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 78 | } |
| 79 | |
| 80 | debugfs_create_file("thermal_enable", 0600, dir, phy, &fops_thermal_enable); |
| 81 | + debugfs_create_file("thermal_recal", 0200, dir, dev, &fops_thermal_recal); |
| 82 | |
| 83 | return 0; |
| 84 | } |
| 85 | diff --git a/mt7996/mtk_mcu.c b/mt7996/mtk_mcu.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame] | 86 | index 967ee874..809181e0 100644 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 87 | --- a/mt7996/mtk_mcu.c |
| 88 | +++ b/mt7996/mtk_mcu.c |
developer | 05f3b2b | 2024-08-19 19:17:34 +0800 | [diff] [blame] | 89 | @@ -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] | 90 | sizeof(req), true); |
| 91 | } |
| 92 | |
| 93 | +int mt7996_mcu_thermal_debug(struct mt7996_dev *dev, u8 mode, u8 action) |
| 94 | +{ |
| 95 | + struct { |
| 96 | + u8 __rsv1[4]; |
| 97 | + |
| 98 | + __le16 tag; |
| 99 | + __le16 len; |
| 100 | + |
| 101 | + u8 mode; |
| 102 | + u8 action; |
| 103 | + u8 __rsv2[2]; |
| 104 | + } __packed req = { |
| 105 | + .tag = cpu_to_le16(mode), |
| 106 | + .len = cpu_to_le16(sizeof(req) - 4), |
| 107 | + .mode = mode, |
| 108 | + .action = action, |
| 109 | + }; |
| 110 | + |
| 111 | + return mt76_mcu_send_msg(&dev->mt76, MCU_WM_UNI_CMD(THERMAL_CAL), &req, |
| 112 | + sizeof(req), true); |
| 113 | +} |
| 114 | #endif |
| 115 | -- |
developer | d0c8945 | 2024-10-11 16:53:27 +0800 | [diff] [blame^] | 116 | 2.45.2 |
developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame] | 117 | |