diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2018-09-14 10:47:53 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-20 21:29:59 -0700 |
commit | 69246cf51011ca951e5c405f5a4d2ee4448eb66c (patch) | |
tree | d99ec6c42874d825f705bcd3ba3c7a709c103232 /driver/charger | |
parent | d5b9b8c12570a57def102d0039f0aef379582fb0 (diff) | |
download | chrome-ec-69246cf51011ca951e5c405f5a4d2ee4448eb66c.tar.gz |
chgmgr: Allow charge_manager_update_charge to accept NULL
Currently, charge_manager_update_charge does not handle NULL pointer
for struct charge_port_info any differently. It's not sanity-checked
either (thus memory access violation can occur).
This patch will make charge_manager_update_charge accept NULL pointer
and set available current and voltage to zero.
This also helps callers' intentions be clear because callers can
explicitly specify NULL (instead of passing a pointer to chg = {0},
which is initialized somewhere else).
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=none
BRANCH=none
TEST=buildall
Change-Id: I518662ab6a3a07f93da5d34cf62a6f856884f67d
Reviewed-on: https://chromium-review.googlesource.com/1226125
Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'driver/charger')
-rw-r--r-- | driver/charger/bd9995x.c | 4 | ||||
-rw-r--r-- | driver/charger/rt946x.c | 13 |
2 files changed, 6 insertions, 11 deletions
diff --git a/driver/charger/bd9995x.c b/driver/charger/bd9995x.c index 5423099e52..9ab69a7c38 100644 --- a/driver/charger/bd9995x.c +++ b/driver/charger/bd9995x.c @@ -438,10 +438,8 @@ static int bd9995x_bc12_check_type(int port) static void bd9995x_bc12_detach(int port, int type) { - struct charge_port_info charge = {0}; - /* Update charge manager */ - charge_manager_update_charge(type, port, &charge); + charge_manager_update_charge(type, port, NULL); /* Disable charging trigger by BC1.2 detection */ bd9995x_bc12_enable_charging(port, 0); diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 757d5a3c0d..9bb1a6cfd7 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -903,10 +903,11 @@ void rt946x_interrupt(enum gpio_signal signal) void usb_charger_task(void *u) { - struct charge_port_info charge; + struct charge_port_info chg; int bc12_type = CHARGE_SUPPLIER_NONE; int reg = 0; + chg.voltage = USB_CHARGER_VOLTAGE_MV; while (1) { rt946x_read8(RT946X_REG_DPDMIRQ, ®); @@ -914,20 +915,16 @@ void usb_charger_task(void *u) if (reg & RT946X_MASK_DPDMIRQ_ATTACH) { bc12_type = rt946x_get_bc12_device_type(); if (bc12_type != CHARGE_SUPPLIER_NONE) { - charge.voltage = USB_CHARGER_VOLTAGE_MV; - charge.current = - rt946x_get_bc12_ilim(bc12_type); + chg.current = rt946x_get_bc12_ilim(bc12_type); charge_manager_update_charge(bc12_type, - 0, &charge); + 0, &chg); rt946x_enable_bc12_detection(0); } } /* VBUS detach event */ if (reg & RT946X_MASK_DPDMIRQ_DETACH) { - charge.current = 0; - charge.voltage = 0; - charge_manager_update_charge(bc12_type, 0, &charge); + charge_manager_update_charge(bc12_type, 0, NULL); rt946x_enable_bc12_detection(1); } |