/* * Copyright (c) 2011-2012, 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 PMIC PM8xxx Thermal Manager driver */ #ifndef __PM8XXX_TM_H #define __PM8XXX_TM_H #include #define PM8XXX_TM_DEV_NAME "pm8xxx-tm" /** * enum pm8xxx_tm_adc_type - support ADC API types for PMIC thermal manager * %PM8XXX_TM_ADC_NONE: Do not call any ADC API and instead estimate * PMIC temerature based on over temperature stage. * %PM8XXX_TM_ADC_PM8058_ADC: Use the pmic8058-xoadc ADC API * %PM8XXX_TM_ADC_PM8XXX_ADC: Use the pm8xxx-adc ADC API */ enum pm8xxx_tm_adc_type { PM8XXX_TM_ADC_NONE, PM8XXX_TM_ADC_PM8058_ADC, PM8XXX_TM_ADC_PM8XXX_ADC, }; /** * struct pm8xxx_tm_core_data - PM8XXX thermal manager core data * @tm_name: Thermal zone name for the device * @irq_name_temp_stat: String name used to identify TEMP_STAT IRQ * @irq_name_over_temp: String name used to identify OVER_TEMP IRQ * @reg_addr_temp_alarm_ctrl: PMIC SSBI address for temp alarm control * register * @reg_addr_temp_alarm_pwm: PMIC SSBI address for temp alarm pwm register * @adc_type: Determines which ADC API to use in order to read * the PMIC die temperature. * @adc_channel: ADC channel identifier * If adc_type == PM8XXX_TM_ADC_PM8XXX_ADC, then * use a value from enum pm8xxx_adc_channels. * If adc_type == PM8XXX_TM_ADC_PM8058_ADC, then * use a channel value specified in * * @default_no_adc_temp: Default temperature in millicelcius to report * while stage == 0 and stage has never been * greater than 0 if adc_type == PM8XXX_TM_ADC_NONE * @allow_software_override: true --> writing "enabled" to thermalfs mode * file results in software override of PMIC * automatic over temperature shutdown * false --> PMIC automatic over temperature * shutdown always enabled. mode file cannot be * set to "enabled". */ struct pm8xxx_tm_core_data { char *tm_name; char *irq_name_temp_stat; char *irq_name_over_temp; u16 reg_addr_temp_alarm_ctrl; u16 reg_addr_temp_alarm_pwm; enum pm8xxx_tm_adc_type adc_type; int adc_channel; unsigned long default_no_adc_temp; bool allow_software_override; }; #endif