Commit | Line | Data |
---|---|---|
ee073604 SP |
1 | /* |
2 | * intel_soc_dts_iosf.h | |
3 | * Copyright (c) 2015, Intel Corporation. | |
4 | * | |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms and conditions of the GNU General Public License, | |
7 | * version 2, as published by the Free Software Foundation. | |
8 | * | |
9 | * This program is distributed in the hope it will be useful, but WITHOUT | |
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
12 | * more details. | |
13 | * | |
14 | */ | |
15 | ||
16 | #ifndef _INTEL_SOC_DTS_IOSF_CORE_H | |
17 | #define _INTEL_SOC_DTS_IOSF_CORE_H | |
18 | ||
19 | #include <linux/thermal.h> | |
20 | ||
21 | /* DTS0 and DTS 1 */ | |
22 | #define SOC_MAX_DTS_SENSORS 2 | |
23 | ||
24 | enum intel_soc_dts_interrupt_type { | |
25 | INTEL_SOC_DTS_INTERRUPT_NONE, | |
26 | INTEL_SOC_DTS_INTERRUPT_APIC, | |
27 | INTEL_SOC_DTS_INTERRUPT_MSI, | |
28 | INTEL_SOC_DTS_INTERRUPT_SCI, | |
29 | INTEL_SOC_DTS_INTERRUPT_SMI, | |
30 | }; | |
31 | ||
32 | struct intel_soc_dts_sensors; | |
33 | ||
34 | struct intel_soc_dts_sensor_entry { | |
35 | int id; | |
36 | u32 temp_mask; | |
37 | u32 temp_shift; | |
38 | u32 store_status; | |
39 | u32 trip_mask; | |
40 | u32 trip_count; | |
41 | enum thermal_trip_type trip_types[2]; | |
42 | struct thermal_zone_device *tzone; | |
43 | struct intel_soc_dts_sensors *sensors; | |
44 | }; | |
45 | ||
46 | struct intel_soc_dts_sensors { | |
47 | u32 tj_max; | |
48 | spinlock_t intr_notify_lock; | |
49 | struct mutex dts_update_lock; | |
50 | enum intel_soc_dts_interrupt_type intr_type; | |
51 | struct intel_soc_dts_sensor_entry soc_dts[SOC_MAX_DTS_SENSORS]; | |
52 | }; | |
53 | ||
54 | struct intel_soc_dts_sensors *intel_soc_dts_iosf_init( | |
55 | enum intel_soc_dts_interrupt_type intr_type, int trip_count, | |
56 | int read_only_trip_count); | |
57 | void intel_soc_dts_iosf_exit(struct intel_soc_dts_sensors *sensors); | |
58 | void intel_soc_dts_iosf_interrupt_handler( | |
59 | struct intel_soc_dts_sensors *sensors); | |
60 | int intel_soc_dts_iosf_add_read_only_critical_trip( | |
61 | struct intel_soc_dts_sensors *sensors, int critical_offset); | |
62 | #endif |