diff options
Diffstat (limited to 'driver')
-rw-r--r-- | driver/charger/bd9995x.c | 8 | ||||
-rw-r--r-- | driver/charger/bq25710.c | 10 | ||||
-rw-r--r-- | driver/charger/isl923x.c | 8 | ||||
-rw-r--r-- | driver/charger/isl9241.c | 6 | ||||
-rw-r--r-- | driver/charger/rt946x.c | 17 |
5 files changed, 30 insertions, 19 deletions
diff --git a/driver/charger/bd9995x.c b/driver/charger/bd9995x.c index 9c78ba7709..d2d3c96751 100644 --- a/driver/charger/bd9995x.c +++ b/driver/charger/bd9995x.c @@ -1063,16 +1063,16 @@ static enum ec_error_list bd9995x_discharge_on_ac(int chgnum, int enable) BD9995X_EXTENDED_COMMAND); } -static int bd9995x_get_vbus_voltage(int chgnum, int port) +static enum ec_error_list bd9995x_get_vbus_voltage(int chgnum, int port, + int *voltage) { uint8_t read_reg; - int voltage; read_reg = (port == BD9995X_CHARGE_PORT_VBUS) ? BD9995X_CMD_VBUS_VAL : BD9995X_CMD_VCC_VAL; - return ch_raw_read16(chgnum, read_reg, &voltage, - BD9995X_EXTENDED_COMMAND) ? 0 : voltage; + return ch_raw_read16(chgnum, read_reg, voltage, + BD9995X_EXTENDED_COMMAND); } /*** Non-standard interface functions ***/ diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index d355db8c7e..a9e58a7f51 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -421,7 +421,8 @@ static enum ec_error_list bq25710_device_id(int chgnum, int *id) } #ifdef CONFIG_USB_PD_VBUS_MEASURE_CHARGER -static int bq25710_get_vbus_voltage(int chgnum, int port) +static enum ec_error_list bq25710_get_vbus_voltage(int chgnum, int port, + int *voltage) { int reg, rv; @@ -439,12 +440,13 @@ static int bq25710_get_vbus_voltage(int chgnum, int port) * LSB => 64mV. * Return 0 when VBUS <= 3.2V as ADC can't measure it. */ - return reg ? + *voltage = reg ? (reg * BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV) : 0; error: - CPRINTF("Could not read VBUS ADC! Error: %d\n", rv); - return 0; + if (rv) + CPRINTF("Could not read VBUS ADC! Error: %d\n", rv); + return rv; } #endif diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c index 594ce698a1..6336b4acaf 100644 --- a/driver/charger/isl923x.c +++ b/driver/charger/isl923x.c @@ -801,21 +801,23 @@ DECLARE_CONSOLE_COMMAND(charger_dump, command_isl923x_dump, "charger_dump <chgnum>", "Dumps ISL923x registers"); #endif /* CONFIG_CMD_CHARGER_DUMP */ -static int isl923x_get_vbus_voltage(int chgnum, int port) +static enum ec_error_list isl923x_get_vbus_voltage(int chgnum, int port, + int *voltage) { int val; int rv; rv = raw_read16(chgnum, RAA489000_REG_ADC_VBUS, &val); if (rv) - return 0; + return rv; /* The VBUS voltage is returned in bits 13:6. The LSB is 96mV. */ val &= GENMASK(13, 6); val = val >> 6; val *= 96; + *voltage = val; - return val; + return EC_SUCCESS; } const struct charger_drv isl923x_drv = { diff --git a/driver/charger/isl9241.c b/driver/charger/isl9241.c index b21048fb84..d21e438edb 100644 --- a/driver/charger/isl9241.c +++ b/driver/charger/isl9241.c @@ -251,7 +251,8 @@ static enum ec_error_list isl9241_set_voltage(int chgnum, int voltage) return isl9241_write(chgnum, ISL9241_REG_MAX_SYSTEM_VOLTAGE, voltage); } -static int isl9241_get_vbus_voltage(int chgnum, int port) +static enum ec_error_list isl9241_get_vbus_voltage(int chgnum, int port, + int *voltage) { int adc_val = 0; int ctl3_val; @@ -284,6 +285,7 @@ static int isl9241_get_vbus_voltage(int chgnum, int port) */ adc_val >>= ISL9241_VIN_ADC_BIT_OFFSET; adc_val *= ISL9241_VIN_ADC_STEP_MV; + *voltage = adc_val; error_restore_ctl3: /* Restore Control3 value */ @@ -294,7 +296,7 @@ error: if (rv) CPRINTF("Could not read VBUS ADC! Error: %d\n", rv); - return adc_val; + return rv; } static enum ec_error_list isl9241_post_init(int chgnum) diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 1a2c8dedba..6e9304c522 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -1387,12 +1387,16 @@ out: return rv; } -static int rt946x_get_vbus_voltage(int chgnum, int port) +static enum ec_error_list rt946x_get_vbus_voltage(int chgnum, int port, + int *voltage) { - static int vbus_mv; + int vbus_mv; + int rv; + + rv = rt946x_get_adc(RT946X_ADC_VBUS_DIV5, &vbus_mv); + *voltage = vbus_mv; - rt946x_get_adc(RT946X_ADC_VBUS_DIV5, &vbus_mv); - return vbus_mv; + return rv; } #ifdef CONFIG_CHARGER_MT6370 @@ -1517,6 +1521,7 @@ void usb_charger_task(void *u) int reg = 0; int bc12_cnt = 0; const int max_bc12_cnt = 3; + int voltage; chg.voltage = USB_CHARGER_VOLTAGE_MV; while (1) { @@ -1528,8 +1533,8 @@ void usb_charger_task(void *u) /* VBUS attach event */ if (reg & RT946X_MASK_DPDMIRQ_ATTACH) { - CPRINTS("VBUS attached: %dmV", - charger_get_vbus_voltage(0)); + charger_get_vbus_voltage(0, &voltage); + CPRINTS("VBUS attached: %dmV", voltage); if (IS_ENABLED(CONFIG_CHARGER_MT6370)) { chg_type = mt6370_get_charger_type(CHARGER_SOLO); |