77 lines
2.6 KiB
C
77 lines
2.6 KiB
C
/*
|
|
* 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
|