xref: /linux/drivers/net/wireless/ath/ath11k/thermal.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
12a63bbcaSPradeep Kumar Chitrapu /* SPDX-License-Identifier: BSD-3-Clause-Clear */
22a63bbcaSPradeep Kumar Chitrapu /*
32a63bbcaSPradeep Kumar Chitrapu  * Copyright (c) 2020 The Linux Foundation. All rights reserved.
42a63bbcaSPradeep Kumar Chitrapu  */
52a63bbcaSPradeep Kumar Chitrapu 
62a63bbcaSPradeep Kumar Chitrapu #ifndef _ATH11K_THERMAL_
72a63bbcaSPradeep Kumar Chitrapu #define _ATH11K_THERMAL_
82a63bbcaSPradeep Kumar Chitrapu 
92a63bbcaSPradeep Kumar Chitrapu #define ATH11K_THERMAL_TEMP_LOW_MARK -100
102a63bbcaSPradeep Kumar Chitrapu #define ATH11K_THERMAL_TEMP_HIGH_MARK 150
112a63bbcaSPradeep Kumar Chitrapu #define ATH11K_THERMAL_THROTTLE_MAX     100
122a63bbcaSPradeep Kumar Chitrapu #define ATH11K_THERMAL_DEFAULT_DUTY_CYCLE 100
13a41d1034SPradeep Kumar Chitrapu #define ATH11K_HWMON_NAME_LEN           15
14a41d1034SPradeep Kumar Chitrapu #define ATH11K_THERMAL_SYNC_TIMEOUT_HZ (5 * HZ)
152a63bbcaSPradeep Kumar Chitrapu 
162a63bbcaSPradeep Kumar Chitrapu struct ath11k_thermal {
172a63bbcaSPradeep Kumar Chitrapu 	struct thermal_cooling_device *cdev;
18a41d1034SPradeep Kumar Chitrapu 	struct completion wmi_sync;
192a63bbcaSPradeep Kumar Chitrapu 
202a63bbcaSPradeep Kumar Chitrapu 	/* protected by conf_mutex */
212a63bbcaSPradeep Kumar Chitrapu 	u32 throttle_state;
22a41d1034SPradeep Kumar Chitrapu 	/* temperature value in Celcius degree
23a41d1034SPradeep Kumar Chitrapu 	 * protected by data_lock
24a41d1034SPradeep Kumar Chitrapu 	 */
25a41d1034SPradeep Kumar Chitrapu 	int temperature;
262a63bbcaSPradeep Kumar Chitrapu };
272a63bbcaSPradeep Kumar Chitrapu 
282a63bbcaSPradeep Kumar Chitrapu #if IS_REACHABLE(CONFIG_THERMAL)
292a63bbcaSPradeep Kumar Chitrapu int ath11k_thermal_register(struct ath11k_base *sc);
302a63bbcaSPradeep Kumar Chitrapu void ath11k_thermal_unregister(struct ath11k_base *sc);
312a63bbcaSPradeep Kumar Chitrapu int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state);
32a41d1034SPradeep Kumar Chitrapu void ath11k_thermal_event_temperature(struct ath11k *ar, int temperature);
332a63bbcaSPradeep Kumar Chitrapu #else
342a63bbcaSPradeep Kumar Chitrapu static inline int ath11k_thermal_register(struct ath11k_base *sc)
352a63bbcaSPradeep Kumar Chitrapu {
362a63bbcaSPradeep Kumar Chitrapu 	return 0;
372a63bbcaSPradeep Kumar Chitrapu }
382a63bbcaSPradeep Kumar Chitrapu 
39*c9be1a64SYueHaibing static inline void ath11k_thermal_unregister(struct ath11k_base *sc)
402a63bbcaSPradeep Kumar Chitrapu {
412a63bbcaSPradeep Kumar Chitrapu }
422a63bbcaSPradeep Kumar Chitrapu 
432a63bbcaSPradeep Kumar Chitrapu static inline int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state)
442a63bbcaSPradeep Kumar Chitrapu {
45*c9be1a64SYueHaibing 	return 0;
462a63bbcaSPradeep Kumar Chitrapu }
472a63bbcaSPradeep Kumar Chitrapu 
48a41d1034SPradeep Kumar Chitrapu static inline void ath11k_thermal_event_temperature(struct ath11k *ar,
49a41d1034SPradeep Kumar Chitrapu 						    int temperature)
50a41d1034SPradeep Kumar Chitrapu {
51a41d1034SPradeep Kumar Chitrapu }
52a41d1034SPradeep Kumar Chitrapu 
532a63bbcaSPradeep Kumar Chitrapu #endif
542a63bbcaSPradeep Kumar Chitrapu #endif /* _ATH11K_THERMAL_ */
55