1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2 /*
3  * Copyright (c) 2020 The Linux Foundation. All rights reserved.
4  */
5 
6 #ifndef _ATH11K_THERMAL_
7 #define _ATH11K_THERMAL_
8 
9 #define ATH11K_THERMAL_TEMP_LOW_MARK -100
10 #define ATH11K_THERMAL_TEMP_HIGH_MARK 150
11 #define ATH11K_THERMAL_THROTTLE_MAX     100
12 #define ATH11K_THERMAL_DEFAULT_DUTY_CYCLE 100
13 #define ATH11K_HWMON_NAME_LEN           15
14 #define ATH11K_THERMAL_SYNC_TIMEOUT_HZ (5 * HZ)
15 
16 struct ath11k_thermal {
17 	struct thermal_cooling_device *cdev;
18 	struct completion wmi_sync;
19 
20 	/* protected by conf_mutex */
21 	u32 throttle_state;
22 	/* temperature value in Celcius degree
23 	 * protected by data_lock
24 	 */
25 	int temperature;
26 };
27 
28 #if IS_REACHABLE(CONFIG_THERMAL)
29 int ath11k_thermal_register(struct ath11k_base *sc);
30 void ath11k_thermal_unregister(struct ath11k_base *sc);
31 int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state);
32 void ath11k_thermal_event_temperature(struct ath11k *ar, int temperature);
33 #else
34 static inline int ath11k_thermal_register(struct ath11k_base *sc)
35 {
36 	return 0;
37 }
38 
39 static inline void ath11k_thermal_unregister(struct ath11k_base *sc)
40 {
41 }
42 
43 static inline int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state)
44 {
45 	return 0;
46 }
47 
48 static inline void ath11k_thermal_event_temperature(struct ath11k *ar,
49 						    int temperature)
50 {
51 }
52 
53 #endif
54 #endif /* _ATH11K_THERMAL_ */
55