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 */
 #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)
 
 #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 {
 #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)