root/include/linux/mfd/axp20x.h

/* [<][>][^][v][top][bottom][index][help] */
/*
 * Functions and registers to access AXP20X power management chip.
 *
 * Copyright (C) 2013, Carlo Caione <carlo@caione.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __LINUX_MFD_AXP20X_H
#define __LINUX_MFD_AXP20X_H

enum {
        AXP202_ID = 0,
        AXP209_ID,
};

#define AXP20X_DATACACHE(m)             (0x04 + (m))

/* Power supply */
#define AXP20X_PWR_INPUT_STATUS         0x00
#define AXP20X_PWR_OP_MODE              0x01
#define AXP20X_USB_OTG_STATUS           0x02
#define AXP20X_PWR_OUT_CTRL             0x12
#define AXP20X_DCDC2_V_OUT              0x23
#define AXP20X_DCDC2_LDO3_V_SCAL        0x25
#define AXP20X_DCDC3_V_OUT              0x27
#define AXP20X_LDO24_V_OUT              0x28
#define AXP20X_LDO3_V_OUT               0x29
#define AXP20X_VBUS_IPSOUT_MGMT         0x30
#define AXP20X_V_OFF                    0x31
#define AXP20X_OFF_CTRL                 0x32
#define AXP20X_CHRG_CTRL1               0x33
#define AXP20X_CHRG_CTRL2               0x34
#define AXP20X_CHRG_BAK_CTRL            0x35
#define AXP20X_PEK_KEY                  0x36
#define AXP20X_DCDC_FREQ                0x37
#define AXP20X_V_LTF_CHRG               0x38
#define AXP20X_V_HTF_CHRG               0x39
#define AXP20X_APS_WARN_L1              0x3a
#define AXP20X_APS_WARN_L2              0x3b
#define AXP20X_V_LTF_DISCHRG            0x3c
#define AXP20X_V_HTF_DISCHRG            0x3d

/* Interrupt */
#define AXP20X_IRQ1_EN                  0x40
#define AXP20X_IRQ2_EN                  0x41
#define AXP20X_IRQ3_EN                  0x42
#define AXP20X_IRQ4_EN                  0x43
#define AXP20X_IRQ5_EN                  0x44
#define AXP20X_IRQ1_STATE               0x48
#define AXP20X_IRQ2_STATE               0x49
#define AXP20X_IRQ3_STATE               0x4a
#define AXP20X_IRQ4_STATE               0x4b
#define AXP20X_IRQ5_STATE               0x4c

/* ADC */
#define AXP20X_ACIN_V_ADC_H             0x56
#define AXP20X_ACIN_V_ADC_L             0x57
#define AXP20X_ACIN_I_ADC_H             0x58
#define AXP20X_ACIN_I_ADC_L             0x59
#define AXP20X_VBUS_V_ADC_H             0x5a
#define AXP20X_VBUS_V_ADC_L             0x5b
#define AXP20X_VBUS_I_ADC_H             0x5c
#define AXP20X_VBUS_I_ADC_L             0x5d
#define AXP20X_TEMP_ADC_H               0x5e
#define AXP20X_TEMP_ADC_L               0x5f
#define AXP20X_TS_IN_H                  0x62
#define AXP20X_TS_IN_L                  0x63
#define AXP20X_GPIO0_V_ADC_H            0x64
#define AXP20X_GPIO0_V_ADC_L            0x65
#define AXP20X_GPIO1_V_ADC_H            0x66
#define AXP20X_GPIO1_V_ADC_L            0x67
#define AXP20X_PWR_BATT_H               0x70
#define AXP20X_PWR_BATT_M               0x71
#define AXP20X_PWR_BATT_L               0x72
#define AXP20X_BATT_V_H                 0x78
#define AXP20X_BATT_V_L                 0x79
#define AXP20X_BATT_CHRG_I_H            0x7a
#define AXP20X_BATT_CHRG_I_L            0x7b
#define AXP20X_BATT_DISCHRG_I_H         0x7c
#define AXP20X_BATT_DISCHRG_I_L         0x7d
#define AXP20X_IPSOUT_V_HIGH_H          0x7e
#define AXP20X_IPSOUT_V_HIGH_L          0x7f

/* Power supply */
#define AXP20X_DCDC_MODE                0x80
#define AXP20X_ADC_EN1                  0x82
#define AXP20X_ADC_EN2                  0x83
#define AXP20X_ADC_RATE                 0x84
#define AXP20X_GPIO10_IN_RANGE          0x85
#define AXP20X_GPIO1_ADC_IRQ_RIS        0x86
#define AXP20X_GPIO1_ADC_IRQ_FAL        0x87
#define AXP20X_TIMER_CTRL               0x8a
#define AXP20X_VBUS_MON                 0x8b
#define AXP20X_OVER_TMP                 0x8f

/* GPIO */
#define AXP20X_GPIO0_CTRL               0x90
#define AXP20X_LDO5_V_OUT               0x91
#define AXP20X_GPIO1_CTRL               0x92
#define AXP20X_GPIO2_CTRL               0x93
#define AXP20X_GPIO20_SS                0x94
#define AXP20X_GPIO3_CTRL               0x95

/* Battery */
#define AXP20X_CHRG_CC_31_24            0xb0
#define AXP20X_CHRG_CC_23_16            0xb1
#define AXP20X_CHRG_CC_15_8             0xb2
#define AXP20X_CHRG_CC_7_0              0xb3
#define AXP20X_DISCHRG_CC_31_24         0xb4
#define AXP20X_DISCHRG_CC_23_16         0xb5
#define AXP20X_DISCHRG_CC_15_8          0xb6
#define AXP20X_DISCHRG_CC_7_0           0xb7
#define AXP20X_CC_CTRL                  0xb8
#define AXP20X_FG_RES                   0xb9

/* Regulators IDs */
enum {
        AXP20X_LDO1 = 0,
        AXP20X_LDO2,
        AXP20X_LDO3,
        AXP20X_LDO4,
        AXP20X_LDO5,
        AXP20X_DCDC2,
        AXP20X_DCDC3,
        AXP20X_REG_ID_MAX,
};

/* IRQs */
enum {
        AXP20X_IRQ_ACIN_OVER_V = 1,
        AXP20X_IRQ_ACIN_PLUGIN,
        AXP20X_IRQ_ACIN_REMOVAL,
        AXP20X_IRQ_VBUS_OVER_V,
        AXP20X_IRQ_VBUS_PLUGIN,
        AXP20X_IRQ_VBUS_REMOVAL,
        AXP20X_IRQ_VBUS_V_LOW,
        AXP20X_IRQ_BATT_PLUGIN,
        AXP20X_IRQ_BATT_REMOVAL,
        AXP20X_IRQ_BATT_ENT_ACT_MODE,
        AXP20X_IRQ_BATT_EXIT_ACT_MODE,
        AXP20X_IRQ_CHARG,
        AXP20X_IRQ_CHARG_DONE,
        AXP20X_IRQ_BATT_TEMP_HIGH,
        AXP20X_IRQ_BATT_TEMP_LOW,
        AXP20X_IRQ_DIE_TEMP_HIGH,
        AXP20X_IRQ_CHARG_I_LOW,
        AXP20X_IRQ_DCDC1_V_LONG,
        AXP20X_IRQ_DCDC2_V_LONG,
        AXP20X_IRQ_DCDC3_V_LONG,
        AXP20X_IRQ_PEK_SHORT = 22,
        AXP20X_IRQ_PEK_LONG,
        AXP20X_IRQ_N_OE_PWR_ON,
        AXP20X_IRQ_N_OE_PWR_OFF,
        AXP20X_IRQ_VBUS_VALID,
        AXP20X_IRQ_VBUS_NOT_VALID,
        AXP20X_IRQ_VBUS_SESS_VALID,
        AXP20X_IRQ_VBUS_SESS_END,
        AXP20X_IRQ_LOW_PWR_LVL1,
        AXP20X_IRQ_LOW_PWR_LVL2,
        AXP20X_IRQ_TIMER,
        AXP20X_IRQ_PEK_RIS_EDGE,
        AXP20X_IRQ_PEK_FAL_EDGE,
        AXP20X_IRQ_GPIO3_INPUT,
        AXP20X_IRQ_GPIO2_INPUT,
        AXP20X_IRQ_GPIO1_INPUT,
        AXP20X_IRQ_GPIO0_INPUT,
};

struct axp20x_dev {
        struct device                   *dev;
        struct i2c_client               *i2c_client;
        struct regmap                   *regmap;
        struct regmap_irq_chip_data     *regmap_irqc;
        long                            variant;
};

#endif /* __LINUX_MFD_AXP20X_H */

/* [<][>][^][v][top][bottom][index][help] */