This snapshot is taken as of msm-3.18 commit dbdb6776f
(Merge "msm: camera: Add dummy sub module in sensor pipeline")
Commit 0b46b8a7
(clocksource: arch_timer: Fix code to use
physical timers when requested) introduces the use of
physical counters and requires clients to use api
arch_counter_get_cntvct(). Accordingly update tsens_poll()
to the new API to prevent a BUG_ON() during bootup.
Fixup TSENS to use supported int type for temperature value.
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
139 lines
5.1 KiB
C
139 lines
5.1 KiB
C
/*
|
|
* 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 */
|