kernel_samsung_a53x/include/linux/power/s2mf301_pmeter.h
2024-06-15 16:02:09 -03:00

129 lines
4.4 KiB
C
Executable file

/*
* s2mf301_pmeter.h - Header of S2MF301 Powermeter Driver
*
* Copyright (C) 2016 Samsung Electronics Co.Ltd
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef S2MF301_PMETER_H
#define S2MF301_PMETER_H
#include <linux/mfd/samsung/s2mf301.h>
#include <linux/platform_device.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/power_supply.h>
enum s2mf301_pm_register_type {
S2MF301_REG_PM_ADC_REQ_DONE1 = 0x0,
S2MF301_REG_PM_ADC_REQ_DONE2 = 0x1,
S2MF301_REG_PM_ADC_REQ_DONE3 = 0x2,
S2MF301_REG_PM_ADC_REQ_DONE4 = 0x3,
S2MF301_REG_PM_ADC_CHANGE_INT1 = 0x4,
S2MF301_REG_PM_ADC_CHANGE_INT2 = 0x5,
S2MF301_REG_PM_ADC_CHANGE_INT3 = 0x6,
S2MF301_REG_PM_ADC_CHANGE_INT4 = 0x7,
S2MF301_REG_PM_ADC_REQ_DONE1_MASK = 0x8,
S2MF301_REG_PM_ADC_REQ_DONE2_MASK = 0x9,
S2MF301_REG_PM_ADC_REQ_DONE3_MASK = 0xA,
S2MF301_REG_PM_ADC_REQ_DONE4_MASK = 0xB,
S2MF301_REG_PM_ADC_CHANGE_INT1_MASK = 0xC,
S2MF301_REG_PM_ADC_CHANGE_INT2_MASK = 0xD,
S2MF301_REG_PM_ADC_CHANGE_INT3_MASK = 0xE,
S2MF301_REG_PM_ADC_CHANGE_INT4_MASK = 0xF,
S2MF301_REG_PM_VADC1_CHGIN = 0x10,
S2MF301_REG_PM_VADC2_CHGIN = 0x11,
S2MF301_REG_PM_IADC1_CHGIN = 0x12,
S2MF301_REG_PM_IADC2_CHGIN = 0x13,
S2MF301_REG_PM_VADC1_WCIN = 0x14,
S2MF301_REG_PM_VADC2_WCIN = 0x15,
S2MF301_REG_PM_IADC1_WCIN = 0x16,
S2MF301_REG_PM_IADC2_WCIN = 0x17,
S2MF301_REG_PM_VADC1_SYS = 0x18,
S2MF301_REG_PM_VADC2_SYS = 0x19,
S2MF301_REG_PM_VADC1_BAT = 0x1A,
S2MF301_REG_PM_VADC2_BAT = 0x1B,
S2MF301_REG_PM_VADC1_CC1 = 0x1C,
S2MF301_REG_PM_VADC2_CC1 = 0x1D,
S2MF301_REG_PM_VADC1_CC2 = 0x1E,
S2MF301_REG_PM_VADC2_CC2 = 0x1F,
S2MF301_REG_PM_VADC1_TADC_DIE = 0x24,
S2MF301_REG_PM_VADC2_TADC_DIE = 0x25,
S2MF301_REG_PM_VADC1_BYP = 0x26,
S2MF301_REG_PM_VADC2_BYP = 0x27,
S2MF301_REG_PM_VADC1_GPADC1 = 0x28,
S2MF301_REG_PM_VADC2_GPADC1 = 0x29,
S2MF301_REG_PM_VADC1_GPADC2 = 0x2A,
S2MF301_REG_PM_VADC2_GPADC2 = 0x2B,
S2MF301_REG_PM_IADC1_OTG = 0x2C,
S2MF301_REG_PM_IADC2_OTG = 0x2D,
S2MF301_REG_PM_VADC1_GPADC3 = 0x2E,
S2MF301_REG_PM_VADC2_GPADC3 = 0x2F,
S2MF301_REG_PM_RID_STATUS = 0x30,
S2MF301_REG_PM_ICHG_STATUS = 0x31,
S2MF301_REG_PM_ADCEN_1TIME_REQ1 = 0x4C,
S2MF301_REG_PM_ADCEN_1TIME_REQ2 = 0x4D,
S2MF301_REG_PM_ADCEN_CONTINU1 = 0x50,
S2MF301_REG_PM_ADCEN_CONTINU2 = 0x51,
S2MF301_REG_PM_HYST_LEV = 0x6F,
};
enum pm_type {
S2MF301_PM_TYPE_VCHGIN = 0,
S2MF301_PM_TYPE_VWCIN,
S2MF301_PM_TYPE_VBYP,
S2MF301_PM_TYPE_VSYS,
S2MF301_PM_TYPE_VBAT,
S2MF301_PM_TYPE_VCC1,
S2MF301_PM_TYPE_VCC2,
S2MF301_PM_TYPE_TDIE,
S2MF301_PM_TYPE_ICHGIN,
S2MF301_PM_TYPE_IWCIN,
S2MF301_PM_TYPE_IOTG,
S2MF301_PM_TYPE_ITX,
S2MF301_PM_TYPE_GPADC1,
S2MF301_PM_TYPE_GPADC2,
S2MF301_PM_TYPE_GPADC3,
S2MF301_PM_TYPE_VDCIN,
S2MF301_PM_TYPE_MAX,
};
enum {
CONTINUOUS_MODE = 0,
REQUEST_RESPONSE_MODE,
};
struct s2mf301_pmeter_data {
struct i2c_client *i2c;
struct device *dev;
struct s2mf301_platform_data *s2mf301_pdata;
int irq_vchgin;
struct power_supply *psy_pm;
struct power_supply_desc psy_pm_desc;
struct mutex pmeter_mutex;
};
#endif /*S2MF301_PMETER_H*/