These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / include / linux / mfd / axp20x.h
index dfabd6d..b24c771 100644 (file)
 #ifndef __LINUX_MFD_AXP20X_H
 #define __LINUX_MFD_AXP20X_H
 
+#include <linux/regmap.h>
+
 enum {
-       AXP202_ID = 0,
+       AXP152_ID = 0,
+       AXP202_ID,
        AXP209_ID,
+       AXP221_ID,
        AXP288_ID,
        NR_AXP20X_VARIANTS,
 };
@@ -21,6 +25,24 @@ enum {
 #define AXP20X_DATACACHE(m)            (0x04 + (m))
 
 /* Power supply */
+#define AXP152_PWR_OP_MODE             0x01
+#define AXP152_LDO3456_DC1234_CTRL     0x12
+#define AXP152_ALDO_OP_MODE            0x13
+#define AXP152_LDO0_CTRL               0x15
+#define AXP152_DCDC2_V_OUT             0x23
+#define AXP152_DCDC2_V_SCAL            0x25
+#define AXP152_DCDC1_V_OUT             0x26
+#define AXP152_DCDC3_V_OUT             0x27
+#define AXP152_ALDO12_V_OUT            0x28
+#define AXP152_DLDO1_V_OUT             0x29
+#define AXP152_DLDO2_V_OUT             0x2a
+#define AXP152_DCDC4_V_OUT             0x2b
+#define AXP152_V_OFF                   0x31
+#define AXP152_OFF_CTRL                        0x32
+#define AXP152_PEK_KEY                 0x36
+#define AXP152_DCDC_FREQ               0x37
+#define AXP152_DCDC_MODE               0x80
+
 #define AXP20X_PWR_INPUT_STATUS                0x00
 #define AXP20X_PWR_OP_MODE             0x01
 #define AXP20X_USB_OTG_STATUS          0x02
@@ -45,7 +67,36 @@ enum {
 #define AXP20X_V_LTF_DISCHRG           0x3c
 #define AXP20X_V_HTF_DISCHRG           0x3d
 
+#define AXP22X_PWR_OUT_CTRL1           0x10
+#define AXP22X_PWR_OUT_CTRL2           0x12
+#define AXP22X_PWR_OUT_CTRL3           0x13
+#define AXP22X_DLDO1_V_OUT             0x15
+#define AXP22X_DLDO2_V_OUT             0x16
+#define AXP22X_DLDO3_V_OUT             0x17
+#define AXP22X_DLDO4_V_OUT             0x18
+#define AXP22X_ELDO1_V_OUT             0x19
+#define AXP22X_ELDO2_V_OUT             0x1a
+#define AXP22X_ELDO3_V_OUT             0x1b
+#define AXP22X_DC5LDO_V_OUT            0x1c
+#define AXP22X_DCDC1_V_OUT             0x21
+#define AXP22X_DCDC2_V_OUT             0x22
+#define AXP22X_DCDC3_V_OUT             0x23
+#define AXP22X_DCDC4_V_OUT             0x24
+#define AXP22X_DCDC5_V_OUT             0x25
+#define AXP22X_DCDC23_V_RAMP_CTRL      0x27
+#define AXP22X_ALDO1_V_OUT             0x28
+#define AXP22X_ALDO2_V_OUT             0x29
+#define AXP22X_ALDO3_V_OUT             0x2a
+#define AXP22X_CHRG_CTRL3              0x35
+
 /* Interrupt */
+#define AXP152_IRQ1_EN                 0x40
+#define AXP152_IRQ2_EN                 0x41
+#define AXP152_IRQ3_EN                 0x42
+#define AXP152_IRQ1_STATE              0x48
+#define AXP152_IRQ2_STATE              0x49
+#define AXP152_IRQ3_STATE              0x4a
+
 #define AXP20X_IRQ1_EN                 0x40
 #define AXP20X_IRQ2_EN                 0x41
 #define AXP20X_IRQ3_EN                 0x42
@@ -100,7 +151,23 @@ enum {
 #define AXP20X_VBUS_MON                        0x8b
 #define AXP20X_OVER_TMP                        0x8f
 
+#define AXP22X_PWREN_CTRL1             0x8c
+#define AXP22X_PWREN_CTRL2             0x8d
+
 /* GPIO */
+#define AXP152_GPIO0_CTRL              0x90
+#define AXP152_GPIO1_CTRL              0x91
+#define AXP152_GPIO2_CTRL              0x92
+#define AXP152_GPIO3_CTRL              0x93
+#define AXP152_LDOGPIO2_V_OUT          0x96
+#define AXP152_GPIO_INPUT              0x97
+#define AXP152_PWM0_FREQ_X             0x98
+#define AXP152_PWM0_FREQ_Y             0x99
+#define AXP152_PWM0_DUTY_CYCLE         0x9a
+#define AXP152_PWM1_FREQ_X             0x9b
+#define AXP152_PWM1_FREQ_Y             0x9c
+#define AXP152_PWM1_DUTY_CYCLE         0x9d
+
 #define AXP20X_GPIO0_CTRL              0x90
 #define AXP20X_LDO5_V_OUT              0x91
 #define AXP20X_GPIO1_CTRL              0x92
@@ -108,6 +175,11 @@ enum {
 #define AXP20X_GPIO20_SS               0x94
 #define AXP20X_GPIO3_CTRL              0x95
 
+#define AXP22X_LDO_IO0_V_OUT           0x91
+#define AXP22X_LDO_IO1_V_OUT           0x93
+#define AXP22X_GPIO_STATE              0x94
+#define AXP22X_GPIO_PULL_DOWN          0x95
+
 /* Battery */
 #define AXP20X_CHRG_CC_31_24           0xb0
 #define AXP20X_CHRG_CC_23_16           0xb1
@@ -120,6 +192,15 @@ enum {
 #define AXP20X_CC_CTRL                 0xb8
 #define AXP20X_FG_RES                  0xb9
 
+/* OCV */
+#define AXP20X_RDC_H                   0xba
+#define AXP20X_RDC_L                   0xbb
+#define AXP20X_OCV(m)                  (0xc0 + (m))
+#define AXP20X_OCV_MAX                 0xf
+
+/* AXP22X specific registers */
+#define AXP22X_BATLOW_THRES1           0xe6
+
 /* AXP288 specific registers */
 #define AXP288_PMIC_ADC_H               0x56
 #define AXP288_PMIC_ADC_L               0x57
@@ -158,7 +239,51 @@ enum {
        AXP20X_REG_ID_MAX,
 };
 
+enum {
+       AXP22X_DCDC1 = 0,
+       AXP22X_DCDC2,
+       AXP22X_DCDC3,
+       AXP22X_DCDC4,
+       AXP22X_DCDC5,
+       AXP22X_DC1SW,
+       AXP22X_DC5LDO,
+       AXP22X_ALDO1,
+       AXP22X_ALDO2,
+       AXP22X_ALDO3,
+       AXP22X_ELDO1,
+       AXP22X_ELDO2,
+       AXP22X_ELDO3,
+       AXP22X_DLDO1,
+       AXP22X_DLDO2,
+       AXP22X_DLDO3,
+       AXP22X_DLDO4,
+       AXP22X_RTC_LDO,
+       AXP22X_LDO_IO0,
+       AXP22X_LDO_IO1,
+       AXP22X_REG_ID_MAX,
+};
+
 /* IRQs */
+enum {
+       AXP152_IRQ_LDO0IN_CONNECT = 1,
+       AXP152_IRQ_LDO0IN_REMOVAL,
+       AXP152_IRQ_ALDO0IN_CONNECT,
+       AXP152_IRQ_ALDO0IN_REMOVAL,
+       AXP152_IRQ_DCDC1_V_LOW,
+       AXP152_IRQ_DCDC2_V_LOW,
+       AXP152_IRQ_DCDC3_V_LOW,
+       AXP152_IRQ_DCDC4_V_LOW,
+       AXP152_IRQ_PEK_SHORT,
+       AXP152_IRQ_PEK_LONG,
+       AXP152_IRQ_TIMER,
+       AXP152_IRQ_PEK_RIS_EDGE,
+       AXP152_IRQ_PEK_FAL_EDGE,
+       AXP152_IRQ_GPIO3_INPUT,
+       AXP152_IRQ_GPIO2_INPUT,
+       AXP152_IRQ_GPIO1_INPUT,
+       AXP152_IRQ_GPIO0_INPUT,
+};
+
 enum {
        AXP20X_IRQ_ACIN_OVER_V = 1,
        AXP20X_IRQ_ACIN_PLUGIN,
@@ -199,6 +324,34 @@ enum {
        AXP20X_IRQ_GPIO0_INPUT,
 };
 
+enum axp22x_irqs {
+       AXP22X_IRQ_ACIN_OVER_V = 1,
+       AXP22X_IRQ_ACIN_PLUGIN,
+       AXP22X_IRQ_ACIN_REMOVAL,
+       AXP22X_IRQ_VBUS_OVER_V,
+       AXP22X_IRQ_VBUS_PLUGIN,
+       AXP22X_IRQ_VBUS_REMOVAL,
+       AXP22X_IRQ_VBUS_V_LOW,
+       AXP22X_IRQ_BATT_PLUGIN,
+       AXP22X_IRQ_BATT_REMOVAL,
+       AXP22X_IRQ_BATT_ENT_ACT_MODE,
+       AXP22X_IRQ_BATT_EXIT_ACT_MODE,
+       AXP22X_IRQ_CHARG,
+       AXP22X_IRQ_CHARG_DONE,
+       AXP22X_IRQ_BATT_TEMP_HIGH,
+       AXP22X_IRQ_BATT_TEMP_LOW,
+       AXP22X_IRQ_DIE_TEMP_HIGH,
+       AXP22X_IRQ_PEK_SHORT,
+       AXP22X_IRQ_PEK_LONG,
+       AXP22X_IRQ_LOW_PWR_LVL1,
+       AXP22X_IRQ_LOW_PWR_LVL2,
+       AXP22X_IRQ_TIMER,
+       AXP22X_IRQ_PEK_RIS_EDGE,
+       AXP22X_IRQ_PEK_FAL_EDGE,
+       AXP22X_IRQ_GPIO1_INPUT,
+       AXP22X_IRQ_GPIO0_INPUT,
+};
+
 enum axp288_irqs {
        AXP288_IRQ_VBUS_FALL     = 2,
        AXP288_IRQ_VBUS_RISE,
@@ -275,4 +428,38 @@ struct axp20x_fg_pdata {
        int thermistor_curve[MAX_THERM_CURVE_SIZE][2];
 };
 
+struct axp20x_chrg_pdata {
+       int max_cc;
+       int max_cv;
+       int def_cc;
+       int def_cv;
+};
+
+struct axp288_extcon_pdata {
+       /* GPIO pin control to switch D+/D- lines b/w PMIC and SOC */
+       struct gpio_desc *gpio_mux_cntl;
+};
+
+/* generic helper function for reading 9-16 bit wide regs */
+static inline int axp20x_read_variable_width(struct regmap *regmap,
+       unsigned int reg, unsigned int width)
+{
+       unsigned int reg_val, result;
+       int err;
+
+       err = regmap_read(regmap, reg, &reg_val);
+       if (err)
+               return err;
+
+       result = reg_val << (width - 8);
+
+       err = regmap_read(regmap, reg + 1, &reg_val);
+       if (err)
+               return err;
+
+       result |= reg_val;
+
+       return result;
+}
+
 #endif /* __LINUX_MFD_AXP20X_H */