summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYilun Lin <yllin@chromium.org>2019-11-14 16:16:21 +0800
committerCommit Bot <commit-bot@chromium.org>2019-11-15 10:19:48 +0000
commit24eb7b805927e482d2cbdca2505734e6ae64700c (patch)
treeb18bf5dfa7e2de590fb4c85d7b34c17fd4beea7a
parentfe55d00fbc8587cd349eafe0cadecc8b3c766096 (diff)
downloadchrome-ec-24eb7b805927e482d2cbdca2505734e6ae64700c.tar.gz
kukui,kodama,jacuzzi: fix charge/discharge control setting order
Should enable charge first then the charge port can function normally. Besides, for device using mt6370 and in force discharge mode, mt6370 would receive a DPDM detach event and release BC1.2 charge supply info. We should force BC1.2 detection again to recognize BC1.2 device again. TEST=on krane 'ectool chargecontrol discharge; ectool chargecontrol normal' and see the charge is charging. BUG=b:143045248 BRANCH=kukui Change-Id: I72481dfddf48b1e274d8d81f8d9223ccb8295c72 Signed-off-by: Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1916160 Reviewed-by: Ting Shen <phoenixshen@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org>
-rw-r--r--board/jacuzzi/board.c8
-rw-r--r--board/kodama/board.c11
-rw-r--r--board/kukui/board.c11
3 files changed, 18 insertions, 12 deletions
diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c
index f8274dd6a5..1dd26c0e4b 100644
--- a/board/jacuzzi/board.c
+++ b/board/jacuzzi/board.c
@@ -140,7 +140,7 @@ int board_set_active_charge_port(int charge_port)
CPRINTS("New chg p%d", charge_port);
/* ignore all request when discharge mode is on */
- if (force_discharge)
+ if (force_discharge && charge_port != CHARGE_PORT_NONE)
return EC_SUCCESS;
switch (charge_port) {
@@ -186,12 +186,12 @@ int board_discharge_on_ac(int enable)
port = charge_manager_get_active_charge_port();
}
- ret = board_set_active_charge_port(port);
+ ret = charger_discharge_on_ac(enable);
if (ret)
return ret;
- force_discharge = enable;
- return charger_discharge_on_ac(enable);
+ force_discharge = enable;
+ return board_set_active_charge_port(port);
}
int pd_snk_is_vbus_provided(int port)
diff --git a/board/kodama/board.c b/board/kodama/board.c
index 905930963a..968f5e5749 100644
--- a/board/kodama/board.c
+++ b/board/kodama/board.c
@@ -125,7 +125,7 @@ int board_set_active_charge_port(int charge_port)
CPRINTS("New chg p%d", charge_port);
/* ignore all request when discharge mode is on */
- if (force_discharge)
+ if (force_discharge && charge_port != CHARGE_PORT_NONE)
return EC_SUCCESS;
switch (charge_port) {
@@ -163,12 +163,15 @@ int board_discharge_on_ac(int enable)
port = charge_manager_get_active_charge_port();
}
- ret = board_set_active_charge_port(port);
+ ret = charger_discharge_on_ac(enable);
if (ret)
return ret;
- force_discharge = enable;
- return charger_discharge_on_ac(enable);
+ if (force_discharge && !enable)
+ rt946x_toggle_bc12_detection();
+
+ force_discharge = enable;
+ return board_set_active_charge_port(port);
}
int extpower_is_present(void)
diff --git a/board/kukui/board.c b/board/kukui/board.c
index f388dca751..21d77589fe 100644
--- a/board/kukui/board.c
+++ b/board/kukui/board.c
@@ -161,7 +161,7 @@ int board_set_active_charge_port(int charge_port)
CPRINTS("New chg p%d", charge_port);
/* ignore all request when discharge mode is on */
- if (force_discharge)
+ if (force_discharge && charge_port != CHARGE_PORT_NONE)
return EC_SUCCESS;
switch (charge_port) {
@@ -209,12 +209,15 @@ int board_discharge_on_ac(int enable)
port = charge_manager_get_active_charge_port();
}
- ret = board_set_active_charge_port(port);
+ ret = charger_discharge_on_ac(enable);
if (ret)
return ret;
- force_discharge = enable;
- return charger_discharge_on_ac(enable);
+ if (force_discharge && !enable)
+ rt946x_toggle_bc12_detection();
+
+ force_discharge = enable;
+ return board_set_active_charge_port(port);
}
#ifndef VARIANT_KUKUI_POGO_KEYBOARD