18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * intel_soc_dts_iosf.h 48c2ecf20Sopenharmony_ci * Copyright (c) 2015, Intel Corporation. 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef _INTEL_SOC_DTS_IOSF_CORE_H 88c2ecf20Sopenharmony_ci#define _INTEL_SOC_DTS_IOSF_CORE_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/thermal.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci/* DTS0 and DTS 1 */ 138c2ecf20Sopenharmony_ci#define SOC_MAX_DTS_SENSORS 2 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cienum intel_soc_dts_interrupt_type { 168c2ecf20Sopenharmony_ci INTEL_SOC_DTS_INTERRUPT_NONE, 178c2ecf20Sopenharmony_ci INTEL_SOC_DTS_INTERRUPT_APIC, 188c2ecf20Sopenharmony_ci INTEL_SOC_DTS_INTERRUPT_MSI, 198c2ecf20Sopenharmony_ci INTEL_SOC_DTS_INTERRUPT_SCI, 208c2ecf20Sopenharmony_ci INTEL_SOC_DTS_INTERRUPT_SMI, 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_cistruct intel_soc_dts_sensors; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistruct intel_soc_dts_sensor_entry { 268c2ecf20Sopenharmony_ci int id; 278c2ecf20Sopenharmony_ci u32 store_status; 288c2ecf20Sopenharmony_ci u32 trip_mask; 298c2ecf20Sopenharmony_ci u32 trip_count; 308c2ecf20Sopenharmony_ci enum thermal_trip_type trip_types[2]; 318c2ecf20Sopenharmony_ci struct thermal_zone_device *tzone; 328c2ecf20Sopenharmony_ci struct intel_soc_dts_sensors *sensors; 338c2ecf20Sopenharmony_ci}; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_cistruct intel_soc_dts_sensors { 368c2ecf20Sopenharmony_ci u32 tj_max; 378c2ecf20Sopenharmony_ci spinlock_t intr_notify_lock; 388c2ecf20Sopenharmony_ci struct mutex dts_update_lock; 398c2ecf20Sopenharmony_ci enum intel_soc_dts_interrupt_type intr_type; 408c2ecf20Sopenharmony_ci struct intel_soc_dts_sensor_entry soc_dts[SOC_MAX_DTS_SENSORS]; 418c2ecf20Sopenharmony_ci}; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_cistruct intel_soc_dts_sensors *intel_soc_dts_iosf_init( 448c2ecf20Sopenharmony_ci enum intel_soc_dts_interrupt_type intr_type, int trip_count, 458c2ecf20Sopenharmony_ci int read_only_trip_count); 468c2ecf20Sopenharmony_civoid intel_soc_dts_iosf_exit(struct intel_soc_dts_sensors *sensors); 478c2ecf20Sopenharmony_civoid intel_soc_dts_iosf_interrupt_handler( 488c2ecf20Sopenharmony_ci struct intel_soc_dts_sensors *sensors); 498c2ecf20Sopenharmony_ciint intel_soc_dts_iosf_add_read_only_critical_trip( 508c2ecf20Sopenharmony_ci struct intel_soc_dts_sensors *sensors, int critical_offset); 518c2ecf20Sopenharmony_ci#endif 52