summaryrefslogtreecommitdiff
path: root/include/linux/msm_tsens.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/msm_tsens.h')
-rw-r--r--include/linux/msm_tsens.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/include/linux/msm_tsens.h b/include/linux/msm_tsens.h
new file mode 100644
index 000000000000..62e59dbe8385
--- /dev/null
+++ b/include/linux/msm_tsens.h
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2011-2015, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+/*
+ * Qualcomm TSENS Header file
+ *
+ */
+
+#ifndef __MSM_TSENS_H
+#define __MSM_TSENS_H
+
+#define TSENS_MAX_SENSORS 11
+#define TSENS_MTC_ZONE_LOG_SIZE 6
+#define TSENS_NUM_MTC_ZONES_SUPPORT 3
+#define TSENS_ZONEMASK_PARAMS 3
+#define TSENS_ZONELOG_PARAMS 1
+#define TSENS_MTC_ZONE_HISTORY_SIZE 3
+
+struct tsens_device {
+ uint32_t sensor_num;
+};
+
+#if defined(CONFIG_THERMAL_TSENS8974)
+/**
+ * tsens_is_ready() - Clients can use this API to check if the TSENS device
+ * is ready and clients can start requesting temperature reads.
+ * @return: Returns true if device is ready else returns -EPROBE_DEFER
+ * for clients to check back after a time duration.
+ */
+int tsens_is_ready(void);
+/**
+ * tsens_tm_init_driver() - Early initialization for clients to read
+ * TSENS temperature.
+ */
+int __init tsens_tm_init_driver(void);
+/**
+ * tsens_get_hw_id_mapping() - Mapping software or sensor ID with the physical
+ * TSENS sensor. On certain cases where there are more number of
+ * controllers the sensor ID is used to map the clients software ID
+ * with the physical HW sensors used by the driver.
+ * @sensors_sw_id: Client ID.
+ * @sensor_hw_num: Sensor client ID passed by the driver. This ID is used
+ * by the driver to map it to the physical HW sensor
+ * number.
+ * @return: If the device is not present returns -EPROBE_DEFER
+ * for clients to check back after a time duration.
+ * 0 on success else error code on error.
+ */
+int tsens_get_hw_id_mapping(int sensor_sw_id, int *sensor_hw_num);
+/**
+ * tsens_get_max_sensor_num() - Get the total number of active TSENS sensors.
+ * The total number received by the client is across multiple
+ * TSENS controllers if present.
+ * @tsens_num_sensors: Total number of sensor result to be stored.
+ */
+int tsens_get_max_sensor_num(uint32_t *tsens_num_sensors);
+/**
+ * tsens_set_mtc_zone_sw_mask() - Mask the MTC threshold level of a zone.
+ * SW can force the MTC to stop issuing throttling commands that
+ * correspond to each MTC threshold level by writing the
+ * corresponding bit in register at any time.
+ * @zone: Zone ID.
+ * @th1_enable : Value corresponding to the threshold level.
+ * @th2_enable : Value corresponding to the threshold level.
+ */
+int tsens_set_mtc_zone_sw_mask(unsigned int zone , unsigned int th1_enable,
+ unsigned int th2_enable);
+/**
+ * tsens_get_mtc_zone_log() - Get the log of last 6 commands sent to pulse
+ * swallower of a zone.
+ * zone: Zone ID
+ * @zone_log: Log commands result to be stored.
+ */
+int tsens_get_mtc_zone_log(unsigned int zone , void *zone_log);
+/**
+ * tsens_mtc_reset_history_counter() - Reset history of throttling commands
+ * sent to pulse swallower. Tsens controller issues clock
+ * throttling commands to Pulse swallower to perform HW
+ * based clock throttling. Reset the history counter of a zone.
+ * @zone: Zone ID.
+ */
+int tsens_mtc_reset_history_counter(unsigned int zone);
+/**
+ * tsens_get_mtc_zone_history() - Get the history of throttling commands sent
+ * to pulse swallower. Tsens controller issues clock throttling
+ * commands to Pulse swallower to perform HW based clock
+ * throttling.
+ * @zone: Zone ID
+ * @zone_hist: Commands history result to be stored.
+ */
+int tsens_get_mtc_zone_history(unsigned int zone , void *zone_hist);
+/**
+ * tsens_get_temp() - Obtain the TSENS temperature for the respective sensor.
+ *
+ * @dev: Sensor number for which client wants the TSENS temperature
+ * reading. The ID passed by the sensor could be the sensor ID
+ * which the driver translates to internally to read the
+ * respective physical HW sensor from the controller.
+ * @temp: temperature result to be stored.
+ * @return: If the device is not present returns -EPROBE_DEFER
+ * for clients to check back after a time duration.
+ * 0 on success else error code on error.
+ */
+int tsens_get_temp(struct tsens_device *dev, int *temp);
+#else
+static inline int tsens_is_ready(void)
+{ return -ENXIO; }
+static inline int __init tsens_tm_init_driver(void)
+{ return -ENXIO; }
+static inline int tsens_get_hw_id_mapping(
+ int sensor_sw_id, int *sensor_hw_num)
+{ return -ENXIO; }
+static inline int tsens_get_max_sensor_num(uint32_t *tsens_num_sensors)
+{ return -ENXIO; }
+static inline int tsens_set_mtc_zone_sw_mask(unsigned int zone ,
+ unsigned int th1_enable ,
+ unsigned int th2_enable)
+{ return -ENXIO; }
+static inline int tsens_get_mtc_zone_log(unsigned int zone , void *zone_log)
+{ return -ENXIO; }
+static inline int tsens_mtc_reset_history_counter(unsigned int zone)
+{ return -ENXIO; }
+static inline int tsens_get_temp(struct tsens_device *dev,
+ int *temp)
+{ return -ENXIO; }
+static inline int tsens_get_mtc_zone_history(unsigned int zone, void *zone_hist)
+{ return -ENXIO; }
+#endif
+
+#endif /*MSM_TSENS_H */