summaryrefslogtreecommitdiff
path: root/driver/charger
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2018-09-14 10:47:53 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-09-20 21:29:59 -0700
commit69246cf51011ca951e5c405f5a4d2ee4448eb66c (patch)
treed99ec6c42874d825f705bcd3ba3c7a709c103232 /driver/charger
parentd5b9b8c12570a57def102d0039f0aef379582fb0 (diff)
downloadchrome-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.c4
-rw-r--r--driver/charger/rt946x.c13
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, &reg);
@@ -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);
}