Commit ecaccdae authored by Howard Hsu's avatar Howard Hsu Committed by Felix Fietkau
Browse files

wifi: mt76: mt7915: rework mt7915_thermal_temp_store()



Call mt7915_mcu_set_thermal_protect() through
mt7915_thermal_temp_store() to update firmware trigger/restore temp
directly.

Fixes: 02ee68b9 ("mt76: mt7915: add control knobs for thermal throttling")
Reviewed-by: default avatarRyder Lee <ryder.lee@mediatek.com>
Signed-off-by: default avatarHoward Hsu <howard-yh.hsu@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 5ad42d19
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -83,9 +83,23 @@ static ssize_t mt7915_thermal_temp_store(struct device *dev,

	mutex_lock(&phy->dev->mt76.mutex);
	val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), 60, 130);

	if ((i - 1 == MT7915_CRIT_TEMP_IDX &&
	     val > phy->throttle_temp[MT7915_MAX_TEMP_IDX]) ||
	    (i - 1 == MT7915_MAX_TEMP_IDX &&
	     val < phy->throttle_temp[MT7915_CRIT_TEMP_IDX])) {
		dev_err(phy->dev->mt76.dev,
			"temp1_max shall be greater than temp1_crit.");
		return -EINVAL;
	}

	phy->throttle_temp[i - 1] = val;
	mutex_unlock(&phy->dev->mt76.mutex);

	ret = mt7915_mcu_set_thermal_protect(phy);
	if (ret)
		return ret;

	return count;
}

@@ -195,8 +209,8 @@ static int mt7915_thermal_init(struct mt7915_phy *phy)
		return PTR_ERR(hwmon);

	/* initialize critical/maximum high temperature */
	phy->throttle_temp[0] = 110;
	phy->throttle_temp[1] = 120;
	phy->throttle_temp[MT7915_CRIT_TEMP_IDX] = 110;
	phy->throttle_temp[MT7915_MAX_TEMP_IDX] = 120;

	return 0;
}
+3 −0
Original line number Diff line number Diff line
@@ -70,6 +70,9 @@

#define MT7915_WED_RX_TOKEN_SIZE	12288

#define MT7915_CRIT_TEMP_IDX		0
#define MT7915_MAX_TEMP_IDX		1

struct mt7915_vif;
struct mt7915_sta;
struct mt7915_dfs_pulse;