summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/charger/bd9995x.c8
-rw-r--r--driver/charger/bq25710.c10
-rw-r--r--driver/charger/isl923x.c8
-rw-r--r--driver/charger/isl9241.c6
-rw-r--r--driver/charger/rt946x.c17
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);