Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / include / linux / mfd / max14577-private.h
index 4992536..f01c1fa 100644 (file)
@@ -72,15 +72,33 @@ enum max14577_muic_reg {
        MAX14577_MUIC_REG_END,
 };
 
+/*
+ * Combined charger types for max14577 and max77836.
+ *
+ * On max14577 three lower bits map to STATUS2/CHGTYP field.
+ * However the max77836 has different two last values of STATUS2/CHGTYP.
+ * To indicate the difference enum has two additional values for max77836.
+ * These values are just a register value bitwise OR with 0x8.
+ */
 enum max14577_muic_charger_type {
-       MAX14577_CHARGER_TYPE_NONE = 0,
-       MAX14577_CHARGER_TYPE_USB,
-       MAX14577_CHARGER_TYPE_DOWNSTREAM_PORT,
-       MAX14577_CHARGER_TYPE_DEDICATED_CHG,
-       MAX14577_CHARGER_TYPE_SPECIAL_500MA,
-       MAX14577_CHARGER_TYPE_SPECIAL_1A,
-       MAX14577_CHARGER_TYPE_RESERVED,
-       MAX14577_CHARGER_TYPE_DEAD_BATTERY = 7,
+       MAX14577_CHARGER_TYPE_NONE              = 0x0,
+       MAX14577_CHARGER_TYPE_USB               = 0x1,
+       MAX14577_CHARGER_TYPE_DOWNSTREAM_PORT   = 0x2,
+       MAX14577_CHARGER_TYPE_DEDICATED_CHG     = 0x3,
+       MAX14577_CHARGER_TYPE_SPECIAL_500MA     = 0x4,
+       /* Special 1A or 2A charger */
+       MAX14577_CHARGER_TYPE_SPECIAL_1A        = 0x5,
+       /* max14577: reserved, used on max77836 */
+       MAX14577_CHARGER_TYPE_RESERVED          = 0x6,
+       /* max14577: dead-battery charing with maximum current 100mA */
+       MAX14577_CHARGER_TYPE_DEAD_BATTERY      = 0x7,
+       /*
+        * max77836: special charger (bias on D+/D-),
+        * matches register value of 0x6
+        */
+       MAX77836_CHARGER_TYPE_SPECIAL_BIAS      = 0xe,
+       /* max77836: reserved, register value 0x7 */
+       MAX77836_CHARGER_TYPE_RESERVED          = 0xf,
 };
 
 /* MAX14577 interrupts */
@@ -121,13 +139,15 @@ enum max14577_muic_charger_type {
 #define STATUS2_CHGTYP_SHIFT           0
 #define STATUS2_CHGDETRUN_SHIFT                3
 #define STATUS2_DCDTMR_SHIFT           4
-#define STATUS2_DBCHG_SHIFT            5
+#define MAX14577_STATUS2_DBCHG_SHIFT   5
+#define MAX77836_STATUS2_DXOVP_SHIFT   5
 #define STATUS2_VBVOLT_SHIFT           6
 #define MAX77836_STATUS2_VIDRM_SHIFT   7
 #define STATUS2_CHGTYP_MASK            (0x7 << STATUS2_CHGTYP_SHIFT)
 #define STATUS2_CHGDETRUN_MASK         BIT(STATUS2_CHGDETRUN_SHIFT)
 #define STATUS2_DCDTMR_MASK            BIT(STATUS2_DCDTMR_SHIFT)
-#define STATUS2_DBCHG_MASK             BIT(STATUS2_DBCHG_SHIFT)
+#define MAX14577_STATUS2_DBCHG_MASK    BIT(MAX14577_STATUS2_DBCHG_SHIFT)
+#define MAX77836_STATUS2_DXOVP_MASK    BIT(MAX77836_STATUS2_DXOVP_SHIFT)
 #define STATUS2_VBVOLT_MASK            BIT(STATUS2_VBVOLT_SHIFT)
 #define MAX77836_STATUS2_VIDRM_MASK    BIT(MAX77836_STATUS2_VIDRM_SHIFT)
 
@@ -177,9 +197,11 @@ enum max14577_muic_charger_type {
 #define CTRL3_JIGSET_SHIFT             0
 #define CTRL3_BOOTSET_SHIFT            2
 #define CTRL3_ADCDBSET_SHIFT           4
+#define CTRL3_WBTH_SHIFT               6
 #define CTRL3_JIGSET_MASK              (0x3 << CTRL3_JIGSET_SHIFT)
 #define CTRL3_BOOTSET_MASK             (0x3 << CTRL3_BOOTSET_SHIFT)
 #define CTRL3_ADCDBSET_MASK            (0x3 << CTRL3_ADCDBSET_SHIFT)
+#define CTRL3_WBTH_MASK                        (0x3 << CTRL3_WBTH_SHIFT)
 
 /* Slave addr = 0x4A: Charger */
 enum max14577_charger_reg {
@@ -210,16 +232,20 @@ enum max14577_charger_reg {
 #define CDETCTRL1_CHGTYPMAN_SHIFT      1
 #define CDETCTRL1_DCDEN_SHIFT          2
 #define CDETCTRL1_DCD2SCT_SHIFT                3
-#define CDETCTRL1_DCHKTM_SHIFT         4
-#define CDETCTRL1_DBEXIT_SHIFT         5
+#define MAX14577_CDETCTRL1_DCHKTM_SHIFT        4
+#define MAX77836_CDETCTRL1_CDLY_SHIFT  4
+#define MAX14577_CDETCTRL1_DBEXIT_SHIFT        5
+#define MAX77836_CDETCTRL1_DCDCPL_SHIFT        5
 #define CDETCTRL1_DBIDLE_SHIFT         6
 #define CDETCTRL1_CDPDET_SHIFT         7
 #define CDETCTRL1_CHGDETEN_MASK                BIT(CDETCTRL1_CHGDETEN_SHIFT)
 #define CDETCTRL1_CHGTYPMAN_MASK       BIT(CDETCTRL1_CHGTYPMAN_SHIFT)
 #define CDETCTRL1_DCDEN_MASK           BIT(CDETCTRL1_DCDEN_SHIFT)
 #define CDETCTRL1_DCD2SCT_MASK         BIT(CDETCTRL1_DCD2SCT_SHIFT)
-#define CDETCTRL1_DCHKTM_MASK          BIT(CDETCTRL1_DCHKTM_SHIFT)
-#define CDETCTRL1_DBEXIT_MASK          BIT(CDETCTRL1_DBEXIT_SHIFT)
+#define MAX14577_CDETCTRL1_DCHKTM_MASK BIT(MAX14577_CDETCTRL1_DCHKTM_SHIFT)
+#define MAX77836_CDETCTRL1_CDDLY_MASK  BIT(MAX77836_CDETCTRL1_CDDLY_SHIFT)
+#define MAX14577_CDETCTRL1_DBEXIT_MASK BIT(MAX14577_CDETCTRL1_DBEXIT_SHIFT)
+#define MAX77836_CDETCTRL1_DCDCPL_MASK BIT(MAX77836_CDETCTRL1_DCDCPL_SHIFT)
 #define CDETCTRL1_DBIDLE_MASK          BIT(CDETCTRL1_DBIDLE_SHIFT)
 #define CDETCTRL1_CDPDET_MASK          BIT(CDETCTRL1_CDPDET_SHIFT)
 
@@ -255,17 +281,36 @@ enum max14577_charger_reg {
 #define CHGCTRL7_OTPCGHCVS_SHIFT       0
 #define CHGCTRL7_OTPCGHCVS_MASK                (0x3 << CHGCTRL7_OTPCGHCVS_SHIFT)
 
-/* MAX14577 regulator current limits (as in CHGCTRL4 register), uA */
-#define MAX14577_REGULATOR_CURRENT_LIMIT_MIN            90000
-#define MAX14577_REGULATOR_CURRENT_LIMIT_HIGH_START    200000
-#define MAX14577_REGULATOR_CURRENT_LIMIT_HIGH_STEP      50000
-#define MAX14577_REGULATOR_CURRENT_LIMIT_MAX           950000
-
-/* MAX77836 regulator current limits (as in CHGCTRL4 register), uA */
-#define MAX77836_REGULATOR_CURRENT_LIMIT_MIN            45000
-#define MAX77836_REGULATOR_CURRENT_LIMIT_HIGH_START    100000
-#define MAX77836_REGULATOR_CURRENT_LIMIT_HIGH_STEP      25000
-#define MAX77836_REGULATOR_CURRENT_LIMIT_MAX           475000
+/* MAX14577 charger current limits (as in CHGCTRL4 register), uA */
+#define MAX14577_CHARGER_CURRENT_LIMIT_MIN              90000U
+#define MAX14577_CHARGER_CURRENT_LIMIT_HIGH_START      200000U
+#define MAX14577_CHARGER_CURRENT_LIMIT_HIGH_STEP        50000U
+#define MAX14577_CHARGER_CURRENT_LIMIT_MAX             950000U
+
+/* MAX77836 charger current limits (as in CHGCTRL4 register), uA */
+#define MAX77836_CHARGER_CURRENT_LIMIT_MIN              45000U
+#define MAX77836_CHARGER_CURRENT_LIMIT_HIGH_START      100000U
+#define MAX77836_CHARGER_CURRENT_LIMIT_HIGH_STEP        25000U
+#define MAX77836_CHARGER_CURRENT_LIMIT_MAX             475000U
+
+/*
+ * MAX14577 charger End-Of-Charge current limits
+ * (as in CHGCTRL5 register), uA
+ */
+#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_MIN         50000U
+#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_STEP                10000U
+#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_MAX         200000U
+
+/*
+ * MAX14577/MAX77836 Battery Constant Voltage
+ * (as in CHGCTRL3 register), uV
+ */
+#define MAXIM_CHARGER_CONSTANT_VOLTAGE_MIN             4000000U
+#define MAXIM_CHARGER_CONSTANT_VOLTAGE_STEP            20000U
+#define MAXIM_CHARGER_CONSTANT_VOLTAGE_MAX             4350000U
+
+/* Default value for fast charge timer, in hours */
+#define MAXIM_CHARGER_FAST_CHARGE_TIMER_DEFAULT                5
 
 /* MAX14577 regulator SFOUT LDO voltage, fixed, uV */
 #define MAX14577_REGULATOR_SAFEOUT_VOLTAGE             4900000