[PATCH ath-next v2] wifi: ath12k: add basic hwmon temperature reporting
Jeff Johnson
jeff.johnson at oss.qualcomm.com
Thu Feb 19 13:44:03 PST 2026
On 2/18/2026 11:34 PM, Maharaja Kennadyrajan wrote:
> +int ath12k_thermal_register(struct ath12k_base *ab)
> +{
> + struct ath12k *ar;
> + int i, j, ret;
> +
> + if (!IS_REACHABLE(CONFIG_HWMON))
> + return 0;
> +
> + for (i = 0; i < ab->num_radios; i++) {
> + ar = ab->pdevs[i].ar;
> + if (!ar)
> + continue;
> +
> + ar->thermal.hwmon_dev =
> + hwmon_device_register_with_groups(&ar->ah->hw->wiphy->dev,
> + "ath12k_hwmon", ar,
> + ath12k_hwmon_groups);
ath10k and ath11k use devm_hwmon_device_register_with_groups().
why doesn't ath12k do the same?
then the code below and in _unregister() that calls hwmon_device_unregister()
would be unnecessary since the objects would be reclaimed when the dev is
destroyed.
> + if (IS_ERR(ar->thermal.hwmon_dev)) {
> + ret = PTR_ERR(ar->thermal.hwmon_dev);
> + ar->thermal.hwmon_dev = NULL;
> + ath12k_err(ar->ab, "failed to register hwmon device: %d\n",
> + ret);
> + for (j = i - 1; j >= 0; j--) {
> + ar = ab->pdevs[i].ar;
> + if (!ar)
> + continue;
> +
> + hwmon_device_unregister(ar->thermal.hwmon_dev);
> + ar->thermal.hwmon_dev = NULL;
> + }
> + return ret;
> + }
> + }
> +
> + return 0;
> +}
> +
> +void ath12k_thermal_unregister(struct ath12k_base *ab)
> +{
> + struct ath12k *ar;
> + int i;
> +
> + if (!IS_REACHABLE(CONFIG_HWMON))
> + return;
> +
> + for (i = 0; i < ab->num_radios; i++) {
> + ar = ab->pdevs[i].ar;
> + if (!ar)
> + continue;
> +
> + if (ar->thermal.hwmon_dev) {
> + hwmon_device_unregister(ar->thermal.hwmon_dev);
> + ar->thermal.hwmon_dev = NULL;
> + }
> + }
> +}
More information about the ath12k
mailing list