root/drivers/thermal/intel/intel_soc_dts_iosf.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * intel_soc_dts_iosf.h
   4  * Copyright (c) 2015, Intel Corporation.
   5  */
   6 
   7 #ifndef _INTEL_SOC_DTS_IOSF_CORE_H
   8 #define _INTEL_SOC_DTS_IOSF_CORE_H
   9 
  10 #include <linux/thermal.h>
  11 
  12 /* DTS0 and DTS 1 */
  13 #define SOC_MAX_DTS_SENSORS     2
  14 
  15 enum intel_soc_dts_interrupt_type {
  16         INTEL_SOC_DTS_INTERRUPT_NONE,
  17         INTEL_SOC_DTS_INTERRUPT_APIC,
  18         INTEL_SOC_DTS_INTERRUPT_MSI,
  19         INTEL_SOC_DTS_INTERRUPT_SCI,
  20         INTEL_SOC_DTS_INTERRUPT_SMI,
  21 };
  22 
  23 struct intel_soc_dts_sensors;
  24 
  25 struct intel_soc_dts_sensor_entry {
  26         int id;
  27         u32 temp_mask;
  28         u32 temp_shift;
  29         u32 store_status;
  30         u32 trip_mask;
  31         u32 trip_count;
  32         enum thermal_trip_type trip_types[2];
  33         struct thermal_zone_device *tzone;
  34         struct intel_soc_dts_sensors *sensors;
  35 };
  36 
  37 struct intel_soc_dts_sensors {
  38         u32 tj_max;
  39         spinlock_t intr_notify_lock;
  40         struct mutex dts_update_lock;
  41         enum intel_soc_dts_interrupt_type intr_type;
  42         struct intel_soc_dts_sensor_entry soc_dts[SOC_MAX_DTS_SENSORS];
  43 };
  44 
  45 struct intel_soc_dts_sensors *intel_soc_dts_iosf_init(
  46         enum intel_soc_dts_interrupt_type intr_type, int trip_count,
  47         int read_only_trip_count);
  48 void intel_soc_dts_iosf_exit(struct intel_soc_dts_sensors *sensors);
  49 void intel_soc_dts_iosf_interrupt_handler(
  50                                 struct intel_soc_dts_sensors *sensors);
  51 int intel_soc_dts_iosf_add_read_only_critical_trip(
  52         struct intel_soc_dts_sensors *sensors, int critical_offset);
  53 #endif

/* [<][>][^][v][top][bottom][index][help] */