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