diff --git a/driver/charger/bd99955.c b/driver/charger/bd99955.c index c392997594..110e03103a 100644 --- a/driver/charger/bd99955.c +++ b/driver/charger/bd99955.c @@ -659,11 +659,13 @@ static void bd99995_init(void) ch_raw_write16(BD99955_CMD_CHGOP_SET1, reg, BD99955_EXTENDED_COMMAND); - /* Enable BC1.2 USB charging and DC/DC converter */ + /* Enable BC1.2 USB charging and DC/DC converter @ 1200KHz */ if (ch_raw_read16(BD99955_CMD_CHGOP_SET2, ®, BD99955_EXTENDED_COMMAND)) return; - reg &= ~(BD99955_CMD_CHGOP_SET2_USB_SUS); + reg &= ~(BD99955_CMD_CHGOP_SET2_USB_SUS | + BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL); + reg |= BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1200; ch_raw_write16(BD99955_CMD_CHGOP_SET2, reg, BD99955_EXTENDED_COMMAND); @@ -714,6 +716,19 @@ static void bd99995_init(void) ch_raw_write16(BD99955_CMD_VCC_TH_SET, BD99955_VBUS_DISCHARGE_TH, BD99955_EXTENDED_COMMAND); #endif + + /* Unlock debug regs */ + ch_raw_write16(BD99955_CMD_PROTECT_SET, 0x3c, BD99955_EXTENDED_COMMAND); + ch_raw_write16(BD99955_CMD_MAP_SET, 0x2, BD99955_EXTENDED_COMMAND); + + /* Undocumented - reverse current threshold = -50mV */ + ch_raw_write16(0x14, 0x0202, BD99955_DEBUG_COMMAND); + /* Undocumented - internal gain = 2x */ + ch_raw_write16(0x1a, 0x80, BD99955_DEBUG_COMMAND); + + /* Re-lock debug regs */ + ch_raw_write16(BD99955_CMD_PROTECT_SET, 0x0, BD99955_EXTENDED_COMMAND); + ch_raw_write16(BD99955_CMD_MAP_SET, 0x1, BD99955_EXTENDED_COMMAND); } DECLARE_HOOK(HOOK_INIT, bd99995_init, HOOK_PRIO_INIT_EXTPOWER); diff --git a/driver/charger/bd99955.h b/driver/charger/bd99955.h index 3cfb9f5192..2c38d5878f 100644 --- a/driver/charger/bd99955.h +++ b/driver/charger/bd99955.h @@ -104,9 +104,14 @@ enum bd99955_charge_port { #define BD99955_CMD_CHGOP_SET1_SDP_CHG_TRIG (1 << 8) #define BD99955_CMD_CHGOP_SET2 0x0C -#define BD99955_CMD_CHGOP_SET2_BATT_LEARN (1 << 8) -#define BD99955_CMD_CHGOP_SET2_CHG_EN (1 << 7) -#define BD99955_CMD_CHGOP_SET2_USB_SUS (1 << 6) +#define BD99955_CMD_CHGOP_SET2_BATT_LEARN (1 << 8) +#define BD99955_CMD_CHGOP_SET2_CHG_EN (1 << 7) +#define BD99955_CMD_CHGOP_SET2_USB_SUS (1 << 6) +#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL (3 << 2) +#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_600 (0 << 2) +#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_857 (1 << 2) +#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1000 (2 << 2) +#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1200 (3 << 2) #define BD99955_CMD_VBUSCLPS_TH_SET 0x0D #define BD99955_CMD_VCCCLPS_TH_SET 0x0E