summaryrefslogtreecommitdiff
path: root/test/charge_manager.c
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2014-11-18 11:28:00 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-21 04:37:50 +0000
commit2a9a859655689246630de3c86c7a254e611c1718 (patch)
tree2529e9db5b8aea1170bcefa564b4fab6f7db66bd /test/charge_manager.c
parent673255588bbf585aa3f9b79defe88dd85025eb36 (diff)
downloadchrome-ec-2a9a859655689246630de3c86c7a254e611c1718.tar.gz
pd: if our request is rejected, go to SNK_READY
If our request is rejected, go to SNK_READY, but don't set explicit contract flag. This also changes charge manager slightly to avoid new power request loops. A new power request is only requested if the charge port changes, or if the active charge port changes its voltage/current offering. A new power request does not occur if the current ceiling changes, since the existing contract still suffices. BUG=chrome-os-partner:33692, chrome-os-partner:28332 BRANCH=samus TEST=make buildall. use samus and make sure we negotiate for 20V as normal. modify zinger to send a REJECT and make sure we go from PD_STATE_SNK_REQUESTED to PD_STATE_SNK_READY and explicit contract bit is 0. Signed-off-by: Alec Berg <alecaberg@chromium.org> Change-Id: Iec02663364dcdc4aa66c681ec08911db7424abbc Reviewed-on: https://chromium-review.googlesource.com/230522 Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'test/charge_manager.c')
-rw-r--r--test/charge_manager.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/test/charge_manager.c b/test/charge_manager.c
index 6c05d8e0b6..78fbd7bfae 100644
--- a/test/charge_manager.c
+++ b/test/charge_manager.c
@@ -257,10 +257,18 @@ static int test_new_power_request(void)
TEST_ASSERT(new_power_request[1] == 1);
clear_new_power_requests();
- /* Reduce port 1 limit and verify NPR on port 1 only */
+ /* Reduce port 1 through ceil and verify no NPR */
charge_manager_set_ceil(1, 500);
wait_for_charge_manager_refresh();
TEST_ASSERT(new_power_request[0] == 0);
+ TEST_ASSERT(new_power_request[1] == 0);
+ clear_new_power_requests();
+
+ /* Change port 1 voltage and verify NPR on port 1 */
+ charge.voltage = 4000;
+ charge_manager_update(CHARGE_SUPPLIER_TEST2, 1, &charge);
+ wait_for_charge_manager_refresh();
+ TEST_ASSERT(new_power_request[0] == 0);
TEST_ASSERT(new_power_request[1] == 1);
clear_new_power_requests();