wifi: mt76: mt7925: introduce thermal protection
[ Upstream commit 1d81e893b422a6f0ae70f8648867c2e73edfb413 ] Add thermal protection to prevent the chip from possible overheating due to prolonged high traffic and adverse operating conditions. Signed-off-by: Leon Yen <leon.yen@mediatek.com> Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com> Link: https://patch.msgid.link/20250509082117.453819-1-mingyen.hsieh@mediatek.com Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7f622bb3b5
commit
84feb629fc
@@ -204,6 +204,12 @@ static void mt7925_init_work(struct work_struct *work)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = mt7925_mcu_set_thermal_protect(dev);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(dev->mt76.dev, "thermal protection enable failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* we support chip reset now */
|
/* we support chip reset now */
|
||||||
dev->hw_init_done = true;
|
dev->hw_init_done = true;
|
||||||
|
|
||||||
|
|||||||
@@ -961,6 +961,23 @@ int mt7925_mcu_set_deep_sleep(struct mt792x_dev *dev, bool enable)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt7925_mcu_set_deep_sleep);
|
EXPORT_SYMBOL_GPL(mt7925_mcu_set_deep_sleep);
|
||||||
|
|
||||||
|
int mt7925_mcu_set_thermal_protect(struct mt792x_dev *dev)
|
||||||
|
{
|
||||||
|
char cmd[64];
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
snprintf(cmd, sizeof(cmd), "ThermalProtGband %d %d %d %d %d %d %d %d %d %d",
|
||||||
|
0, 100, 90, 80, 30, 1, 1, 115, 105, 5);
|
||||||
|
ret = mt7925_mcu_chip_config(dev, cmd);
|
||||||
|
|
||||||
|
snprintf(cmd, sizeof(cmd), "ThermalProtAband %d %d %d %d %d %d %d %d %d %d",
|
||||||
|
1, 100, 90, 80, 30, 1, 1, 115, 105, 5);
|
||||||
|
ret |= mt7925_mcu_chip_config(dev, cmd);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mt7925_mcu_set_thermal_protect);
|
||||||
|
|
||||||
int mt7925_run_firmware(struct mt792x_dev *dev)
|
int mt7925_run_firmware(struct mt792x_dev *dev)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -3288,7 +3305,8 @@ int mt7925_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb,
|
|||||||
else
|
else
|
||||||
uni_txd->option = MCU_CMD_UNI_EXT_ACK;
|
uni_txd->option = MCU_CMD_UNI_EXT_ACK;
|
||||||
|
|
||||||
if (cmd == MCU_UNI_CMD(HIF_CTRL))
|
if (cmd == MCU_UNI_CMD(HIF_CTRL) ||
|
||||||
|
cmd == MCU_UNI_CMD(CHIP_CONFIG))
|
||||||
uni_txd->option &= ~MCU_CMD_ACK;
|
uni_txd->option &= ~MCU_CMD_ACK;
|
||||||
|
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|||||||
@@ -635,6 +635,7 @@ int mt7925_mcu_add_bss_info(struct mt792x_phy *phy,
|
|||||||
int mt7925_mcu_set_timing(struct mt792x_phy *phy,
|
int mt7925_mcu_set_timing(struct mt792x_phy *phy,
|
||||||
struct ieee80211_bss_conf *link_conf);
|
struct ieee80211_bss_conf *link_conf);
|
||||||
int mt7925_mcu_set_deep_sleep(struct mt792x_dev *dev, bool enable);
|
int mt7925_mcu_set_deep_sleep(struct mt792x_dev *dev, bool enable);
|
||||||
|
int mt7925_mcu_set_thermal_protect(struct mt792x_dev *dev);
|
||||||
int mt7925_mcu_set_channel_domain(struct mt76_phy *phy);
|
int mt7925_mcu_set_channel_domain(struct mt76_phy *phy);
|
||||||
int mt7925_mcu_set_radio_en(struct mt792x_phy *phy, bool enable);
|
int mt7925_mcu_set_radio_en(struct mt792x_phy *phy, bool enable);
|
||||||
int mt7925_mcu_set_chctx(struct mt76_phy *phy, struct mt76_vif *mvif,
|
int mt7925_mcu_set_chctx(struct mt76_phy *phy, struct mt76_vif *mvif,
|
||||||
|
|||||||
Reference in New Issue
Block a user