1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * 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 <linux/errno.h>
- #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
- * <linux/pmic8058-xoadc.h>
- * @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
|