summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2015-06-04 11:47:32 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-06-11 02:57:52 +0000
commit4aee90d5594863fc390e73dc880fb328cf4bfbd3 (patch)
tree2e5ce6ce0ce9a718c5d95a9c5c55bc5b65dd61fe
parent0a7f37d720ef8e2a0c6541054e9c01161ba0afb0 (diff)
downloadchrome-ec-4aee90d5594863fc390e73dc880fb328cf4bfbd3.tar.gz
pd: change pd_transmit() to only wait for TX complete event
Change pd_transmit() to wait specifically for the TX complete event using task_wait_event_mask(). This fixes a bug that if another event, it will now restore that event instead of consuming it. BUG=chrome-os-partner:40920, chrome-os-partner:41290 BRANCH=smaug TEST=load onto glados and zinger and attach them a bunch of times and get stable contract with no hard resets. Change-Id: I36514ea45b5e2b5fd42acdad94e5786da5bd90b6 Signed-off-by: Alec Berg <alecaberg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/276745 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r--common/usb_pd_protocol.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c
index a9f3eaa62a..7b72a44229 100644
--- a/common/usb_pd_protocol.c
+++ b/common/usb_pd_protocol.c
@@ -297,9 +297,7 @@ static int pd_transmit(int port, enum tcpm_transmit_type type,
tcpm_transmit(port, type, header, data);
/* Wait until TX is complete */
- do {
- evt = task_wait_event(PD_T_TCPC_TX_TIMEOUT);
- } while (!(evt & (TASK_EVENT_TIMER | PD_EVENT_TX)));
+ evt = task_wait_event_mask(PD_EVENT_TX, PD_T_TCPC_TX_TIMEOUT);
if (evt & TASK_EVENT_TIMER)
return -1;