summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 {
/*