summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/charger/sm5803.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/driver/charger/sm5803.c b/driver/charger/sm5803.c
index 0e0f84ff80..132e2e5a9c 100644
--- a/driver/charger/sm5803.c
+++ b/driver/charger/sm5803.c
@@ -206,26 +206,27 @@ static void sm5803_init(int chgnum)
{
enum ec_error_list rv;
int reg;
+ int vbus_mv;
/*
* If a charger is not currently present, disable switching per OCPC
* requirements
*/
- rv = main_read8(chgnum, SM5803_REG_STATUS1, &reg);
+ rv = charger_get_vbus_voltage(chgnum, &vbus_mv);
if (rv == EC_SUCCESS) {
- if (!(reg & SM5803_STATUS1_CHG_DET)) {
+ if (vbus_mv < 4000) {
/*
* No charger connected, disable CHG_EN
* (note other bits default to 0)
*/
rv = chg_write8(chgnum, SM5803_FLOW1_CHG_EN,
0);
- } else {
+ } else if (!sm5803_is_sourcing_otg_power(chgnum, chgnum)) {
charger_vbus[chgnum] = 1;
}
} else {
- CPRINTS("%s %d: Failed to read status during init",
- CHARGER_NAME, chgnum);
+ CPRINTS("%s %d: Failed to read VBUS voltage during init",
+ CHARGER_NAME, chgnum);
return;
}