summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Yilun Lin <yllin@chromium.org>2021-10-18 14:48:03 +0800
committerCommit Bot <commit-bot@chromium.org>2021-10-19 02:02:48 +0000
commit1b2ce8747e60e0bb7c58dae8062091428a97eb08 (patch)
tree55d198de9ef8996caac733396d91c66b9b6b3393
parent814bde1b0af78e4059397a0ef3ab1fc5304d4908 (diff)
downloadchrome-ec-firmware-cr50-stab-14294.B-main.tar.gz
charge_manager: don't send new power request when DPS enabledfirmware-cr50-stab-mp-14300.B-mainfirmware-cr50-stab-14294.B-main
DPS would control the PD sink voltage dynamically, so charge_manager doesn't need to send a new power request if it's not sinking the max voltage. Also, merge two new powe requests into one to prevent from sending multiple requests at one time. BUG=b:169532537 TEST=enable DPS, and won't send consecutive DP requests when switching voltage BRANCH=main Change-Id: Ib706f4feb5c6434d71b9576f299898a12613aded Signed-off-by: Eric Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3229049 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Commit-Queue: Eric Yilun Lin <yllin@google.com> Tested-by: Eric Yilun Lin <yllin@google.com>
-rw-r--r--common/charge_manager.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c
index 14c869c3b2..3d41c3a08d 100644
--- a/common/charge_manager.c
+++ b/common/charge_manager.c
@@ -934,6 +934,7 @@ static void charge_manager_refresh(void)
uint32_t max_voltage;
uint32_t max_current;
uint32_t unused;
+ bool new_req = false;
/*
* Check if new voltage/current is different
* than requested. If yes, send new power request
@@ -942,19 +943,28 @@ static void charge_manager_refresh(void)
charge_voltage ||
pd_get_requested_current(updated_new_port) !=
charge_current_uncapped)
- pd_set_new_power_request(updated_new_port);
+ new_req = true;
- /*
- * Check if we can get more power from this port.
- * If yes, send new power request
- */
- pd_find_pdo_index(pd_get_src_cap_cnt(updated_new_port),
- pd_get_src_caps(updated_new_port),
- pd_get_max_voltage(), &pdo);
- pd_extract_pdo_power(pdo, &max_current, &max_voltage,
- &unused);
- if (charge_voltage != max_voltage ||
- charge_current_uncapped != max_current)
+ if (IS_ENABLED(CONFIG_USB_PD_DPS) && dps_is_enabled()) {
+ /* Fall-through. DPS control sink voltage */
+ } else {
+ /*
+ * Check if we can get more power from this
+ * port. If yes, send new power request
+ */
+ pd_find_pdo_index(
+ pd_get_src_cap_cnt(updated_new_port),
+ pd_get_src_caps(updated_new_port),
+ pd_get_max_voltage(), &pdo);
+ pd_extract_pdo_power(pdo, &max_current,
+ &max_voltage, &unused);
+
+ if (charge_voltage != max_voltage ||
+ charge_current_uncapped != max_current)
+ new_req = true;
+ }
+
+ if (new_req)
pd_set_new_power_request(updated_new_port);
} else {
/*