diff options
author | Diana Z <dzigterman@chromium.org> | 2020-01-22 12:07:04 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-28 20:22:26 +0000 |
commit | 1b4ce5849d520b67447bdc5b94e346432eac2126 (patch) | |
tree | a640609b5c024c0020ccb48e121b496fa686f1c2 | |
parent | f1e626bf81bc511d713fd306395d00e857764c09 (diff) | |
download | chrome-ec-1b4ce5849d520b67447bdc5b94e346432eac2126.tar.gz |
Charger: change get_vbus_voltage to return EC error
The other driver structure members return an ec_error_list value and
fill in parameters to return data. This commit changes the
get_vbus_voltage call to follow that model.
BRANCH=None
BUG=b:147672225
TEST=builds
Change-Id: I7308502a9734274dd308b830762493c4d70d147a
Signed-off-by: Diana Z <dzigterman@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2015340
Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r-- | board/coral/board.c | 7 | ||||
-rw-r--r-- | board/eve/board.c | 7 | ||||
-rw-r--r-- | board/kodama/board.c | 6 | ||||
-rw-r--r-- | board/kukui/board.c | 6 | ||||
-rw-r--r-- | board/reef/board.c | 7 | ||||
-rw-r--r-- | board/reef_it8320/board.c | 7 | ||||
-rw-r--r-- | board/reef_mchp/board.c | 7 | ||||
-rw-r--r-- | common/charge_manager.c | 7 | ||||
-rw-r--r-- | common/charger.c | 5 | ||||
-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 | ||||
-rw-r--r-- | include/charger.h | 5 |
15 files changed, 82 insertions, 31 deletions
diff --git a/board/coral/board.c b/board/coral/board.c index 04cb86ec33..426926fd7f 100644 --- a/board/coral/board.c +++ b/board/coral/board.c @@ -559,7 +559,12 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE; + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < BD9995X_BC12_MIN_VOLTAGE; } static void enable_input_devices(void) diff --git a/board/eve/board.c b/board/eve/board.c index 42ff73643f..a3d6e47460 100644 --- a/board/eve/board.c +++ b/board/eve/board.c @@ -583,7 +583,12 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE; + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < BD9995X_BC12_MIN_VOLTAGE; } /* Clear pending interrupts and enable DSP for wake */ diff --git a/board/kodama/board.c b/board/kodama/board.c index 8839c77a54..aa02750980 100644 --- a/board/kodama/board.c +++ b/board/kodama/board.c @@ -356,6 +356,7 @@ void usb_charger_set_switches(int port, enum usb_switch setting) */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { + int voltage; /* * Though we have a more tolerant range (3.9V~13.4V), setting 4400 to * prevent from a bad charger crashed. @@ -366,7 +367,10 @@ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) * try to raise this value to 4600. (when it says it read 4400, it is * actually close to 4600) */ - return charger_get_vbus_voltage(port) < 4400; + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < 4400; } __override int board_charge_port_is_sink(int port) diff --git a/board/kukui/board.c b/board/kukui/board.c index 4b9516eb7a..91b989aec8 100644 --- a/board/kukui/board.c +++ b/board/kukui/board.c @@ -566,6 +566,7 @@ void usb_charger_set_switches(int port, enum usb_switch setting) */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { + int voltage; /* * Though we have a more tolerant range (3.9V~13.4V), setting 4400 to * prevent from a bad charger crashed. @@ -576,7 +577,10 @@ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) * try to raise this value to 4600. (when it says it read 4400, it is * actually close to 4600) */ - return charger_get_vbus_voltage(port) < 4400; + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < 4400; } __override int board_charge_port_is_sink(int port) diff --git a/board/reef/board.c b/board/reef/board.c index 10516d6e62..dd16d6e26c 100644 --- a/board/reef/board.c +++ b/board/reef/board.c @@ -545,7 +545,12 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE; + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < BD9995X_BC12_MIN_VOLTAGE; } static void enable_input_devices(void) diff --git a/board/reef_it8320/board.c b/board/reef_it8320/board.c index 0a513c63a4..a6ac274f93 100644 --- a/board/reef_it8320/board.c +++ b/board/reef_it8320/board.c @@ -336,7 +336,12 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE; + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < BD9995X_BC12_MIN_VOLTAGE; } /* Called on AP S5 -> S3 transition */ diff --git a/board/reef_mchp/board.c b/board/reef_mchp/board.c index d020d407bc..d06e8f719c 100644 --- a/board/reef_mchp/board.c +++ b/board/reef_mchp/board.c @@ -781,7 +781,12 @@ int board_is_consuming_full_charge(void) */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - return charger_get_vbus_voltage(port) < BD9995X_BC12_MIN_VOLTAGE; + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + + return voltage < BD9995X_BC12_MIN_VOLTAGE; } static void enable_input_devices(void) diff --git a/common/charge_manager.c b/common/charge_manager.c index f9c6d8060c..9f2ee4132f 100644 --- a/common/charge_manager.c +++ b/common/charge_manager.c @@ -459,7 +459,12 @@ static void charge_manager_fill_power_info(int port, r->meas.voltage_now = 5000; else { #if defined(CONFIG_USB_PD_VBUS_MEASURE_CHARGER) - r->meas.voltage_now = charger_get_vbus_voltage(port); + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + r->meas.voltage_now = 0; + else + r->meas.voltage_now = voltage; #elif defined(CONFIG_USB_PD_VBUS_MEASURE_TCPC) r->meas.voltage_now = tcpc_get_vbus_voltage(port); #elif defined(CONFIG_USB_PD_VBUS_MEASURE_ADC_EACH_PORT) diff --git a/common/charger.c b/common/charger.c index e2f6112ed7..0f198b2635 100644 --- a/common/charger.c +++ b/common/charger.c @@ -455,7 +455,7 @@ enum ec_error_list charger_discharge_on_ac(int enable) return rv; } -int charger_get_vbus_voltage(int port) +enum ec_error_list charger_get_vbus_voltage(int port, int *voltage) { int chgnum = 0; int rv = 0; @@ -466,7 +466,8 @@ int charger_get_vbus_voltage(int port) } if (chg_chips[chgnum].drv->get_vbus_voltage) - rv = chg_chips[chgnum].drv->get_vbus_voltage(chgnum, port); + rv = chg_chips[chgnum].drv->get_vbus_voltage(chgnum, port, + voltage); return rv; } 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); diff --git a/include/charger.h b/include/charger.h index 6aebf3b94c..2c7a7ce8a8 100644 --- a/include/charger.h +++ b/include/charger.h @@ -82,7 +82,8 @@ struct charger_drv { enum ec_error_list (*discharge_on_ac)(int chgnum, int enable); /* Get the VBUS voltage (mV) from the charger */ - int (*get_vbus_voltage)(int chgnum, int port); + enum ec_error_list (*get_vbus_voltage)(int chgnum, int port, + int *voltage); /* Set desired input current value */ enum ec_error_list (*set_input_current)(int chgnum, int input_current); @@ -214,7 +215,7 @@ enum ec_error_list charger_set_voltage(int voltage); enum ec_error_list charger_discharge_on_ac(int enable); /* Get the VBUS voltage (mV) from the charger */ -int charger_get_vbus_voltage(int port); +enum ec_error_list charger_get_vbus_voltage(int port, int *voltage); /* Custom board function to discharge battery when on AC power */ int board_discharge_on_ac(int enable); |