1da8fa4e3SBjoern A. Zeeb /* SPDX-License-Identifier: ISC */ 2da8fa4e3SBjoern A. Zeeb /* 3da8fa4e3SBjoern A. Zeeb * Copyright (c) 2014-2016 Qualcomm Atheros, Inc. 4da8fa4e3SBjoern A. Zeeb */ 5da8fa4e3SBjoern A. Zeeb #ifndef _THERMAL_ 6da8fa4e3SBjoern A. Zeeb #define _THERMAL_ 7da8fa4e3SBjoern A. Zeeb 8da8fa4e3SBjoern A. Zeeb #define ATH10K_QUIET_PERIOD_DEFAULT 100 9da8fa4e3SBjoern A. Zeeb #define ATH10K_QUIET_PERIOD_MIN 25 10da8fa4e3SBjoern A. Zeeb #define ATH10K_QUIET_START_OFFSET 10 11da8fa4e3SBjoern A. Zeeb #define ATH10K_HWMON_NAME_LEN 15 12da8fa4e3SBjoern A. Zeeb #define ATH10K_THERMAL_SYNC_TIMEOUT_HZ (5 * HZ) 13da8fa4e3SBjoern A. Zeeb #define ATH10K_THERMAL_THROTTLE_MAX 100 14da8fa4e3SBjoern A. Zeeb 15da8fa4e3SBjoern A. Zeeb struct ath10k_thermal { 16da8fa4e3SBjoern A. Zeeb struct thermal_cooling_device *cdev; 17da8fa4e3SBjoern A. Zeeb struct completion wmi_sync; 18da8fa4e3SBjoern A. Zeeb 19da8fa4e3SBjoern A. Zeeb /* protected by conf_mutex */ 20da8fa4e3SBjoern A. Zeeb u32 throttle_state; 21da8fa4e3SBjoern A. Zeeb u32 quiet_period; 22*07724ba6SBjoern A. Zeeb /* temperature value in Celsius degree 23da8fa4e3SBjoern A. Zeeb * protected by data_lock 24da8fa4e3SBjoern A. Zeeb */ 25da8fa4e3SBjoern A. Zeeb int temperature; 26da8fa4e3SBjoern A. Zeeb }; 27da8fa4e3SBjoern A. Zeeb 28da8fa4e3SBjoern A. Zeeb #if IS_REACHABLE(CONFIG_THERMAL) 29da8fa4e3SBjoern A. Zeeb int ath10k_thermal_register(struct ath10k *ar); 30da8fa4e3SBjoern A. Zeeb void ath10k_thermal_unregister(struct ath10k *ar); 31da8fa4e3SBjoern A. Zeeb void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature); 32da8fa4e3SBjoern A. Zeeb void ath10k_thermal_set_throttling(struct ath10k *ar); 33da8fa4e3SBjoern A. Zeeb #else ath10k_thermal_register(struct ath10k * ar)34da8fa4e3SBjoern A. Zeebstatic inline int ath10k_thermal_register(struct ath10k *ar) 35da8fa4e3SBjoern A. Zeeb { 36da8fa4e3SBjoern A. Zeeb return 0; 37da8fa4e3SBjoern A. Zeeb } 38da8fa4e3SBjoern A. Zeeb ath10k_thermal_unregister(struct ath10k * ar)39da8fa4e3SBjoern A. Zeebstatic inline void ath10k_thermal_unregister(struct ath10k *ar) 40da8fa4e3SBjoern A. Zeeb { 41da8fa4e3SBjoern A. Zeeb } 42da8fa4e3SBjoern A. Zeeb ath10k_thermal_event_temperature(struct ath10k * ar,int temperature)43da8fa4e3SBjoern A. Zeebstatic inline void ath10k_thermal_event_temperature(struct ath10k *ar, 44da8fa4e3SBjoern A. Zeeb int temperature) 45da8fa4e3SBjoern A. Zeeb { 46da8fa4e3SBjoern A. Zeeb } 47da8fa4e3SBjoern A. Zeeb ath10k_thermal_set_throttling(struct ath10k * ar)48da8fa4e3SBjoern A. Zeebstatic inline void ath10k_thermal_set_throttling(struct ath10k *ar) 49da8fa4e3SBjoern A. Zeeb { 50da8fa4e3SBjoern A. Zeeb } 51da8fa4e3SBjoern A. Zeeb 52da8fa4e3SBjoern A. Zeeb #endif 53da8fa4e3SBjoern A. Zeeb #endif /* _THERMAL_ */ 54