diff options
Diffstat (limited to 'driver/charger')
-rw-r--r-- | driver/charger/bd9995x.c | 21 | ||||
-rw-r--r-- | driver/charger/bd9995x.h | 2 |
2 files changed, 10 insertions, 13 deletions
diff --git a/driver/charger/bd9995x.c b/driver/charger/bd9995x.c index 33ff4c78af..df69f348e8 100644 --- a/driver/charger/bd9995x.c +++ b/driver/charger/bd9995x.c @@ -867,25 +867,22 @@ int charger_discharge_on_ac(int enable) BD9995X_EXTENDED_COMMAND); } -int charger_get_vbus_level(void) +int charger_get_vbus_voltage(int port) { - int vbus_val; - int vcc_val; - int rv; + uint8_t read_reg; + int voltage; - rv = ch_raw_read16(BD9995X_CMD_VBUS_VAL, &vbus_val, - BD9995X_EXTENDED_COMMAND); + read_reg = (bd9995x_pd_port_to_chg_port(port) == + BD9995X_CHARGE_PORT_VBUS) ? BD9995X_CMD_VBUS_VAL : + BD9995X_CMD_VCC_VAL; - rv += ch_raw_read16(BD9995X_CMD_VCC_VAL, &vcc_val, - BD9995X_EXTENDED_COMMAND); - - return rv ? 0 : MAX(vbus_val, vcc_val); + return ch_raw_read16(read_reg, &voltage, BD9995X_EXTENDED_COMMAND) ? + 0 : voltage; } - /*** Non-standard interface functions ***/ -int bd9995x_is_vbus_provided(int port) +int bd9995x_is_vbus_provided(enum bd9995x_charge_port port) { int reg; diff --git a/driver/charger/bd9995x.h b/driver/charger/bd9995x.h index a5ce174aea..6140fb2971 100644 --- a/driver/charger/bd9995x.h +++ b/driver/charger/bd9995x.h @@ -344,7 +344,7 @@ static inline enum bd9995x_charge_port bd9995x_pd_port_to_chg_port(int port) */ /* Is VBUS provided or external power present */ -int bd9995x_is_vbus_provided(int port); +int bd9995x_is_vbus_provided(enum bd9995x_charge_port port); /* Select or deselect input port from {VCC, VBUS, VCC&VBUS}. */ int bd9995x_select_input_port(enum bd9995x_charge_port port, int select); /* Get input current limit for BC1.2 suppliers */ |