summaryrefslogtreecommitdiff
path: root/common/usbc/dp_alt_mode.c
diff options
context:
space:
mode:
authorAndrew McRae <amcrae@google.com>2020-06-16 09:00:16 +1000
committerCommit Bot <commit-bot@chromium.org>2020-06-16 02:39:31 +0000
commit08a39ff9dbb8a1e6417ed3b55eb35cc9850d5057 (patch)
tree1c43a3a3938b02924ff2dae7dccf635b338818c0 /common/usbc/dp_alt_mode.c
parent6af17f0cd227d96c9d74af87724d80b76995c35c (diff)
downloadchrome-ec-08a39ff9dbb8a1e6417ed3b55eb35cc9850d5057.tar.gz
TCPMv2: Fix the sending of CMD_EXIT_MODE
Fix the request to send CMD_EXIT_MODE, which needs to set the right state in order for the message to be sent. Also handle the receipt of an ACK for CMD_EXIT_MODE. BUG=b:158813138 TEST=Confirm that DP mode is exited. BRANCH=none Signed-off-by: Andrew McRae <amcrae@google.com> Change-Id: Id9b58616771e729d8ae6543f973669be7649dc45 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2245584 Reviewed-by: Andrew McRae <amcrae@chromium.org> Tested-by: Andrew McRae <amcrae@chromium.org> Commit-Queue: Andrew McRae <amcrae@chromium.org>
Diffstat (limited to 'common/usbc/dp_alt_mode.c')
-rw-r--r--common/usbc/dp_alt_mode.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/common/usbc/dp_alt_mode.c b/common/usbc/dp_alt_mode.c
index ff8909bbd6..f8ccc5f3c8 100644
--- a/common/usbc/dp_alt_mode.c
+++ b/common/usbc/dp_alt_mode.c
@@ -61,6 +61,14 @@ void dp_vdm_acked(int port, enum tcpm_transmit_type type, int vdo_count,
pd_get_amode_data(port, type, USB_SID_DISPLAYPORT);
const uint8_t vdm_cmd = PD_VDO_CMD(vdm[0]);
+ /*
+ * Handle the ACK of a request to exit alt mode.
+ */
+ if (type == TCPC_TX_SOP && vdm_cmd == CMD_EXIT_MODE) {
+ dpm_init(port);
+ return;
+ }
+
if (type != TCPC_TX_SOP || next_vdm_cmd[port] != vdm_cmd) {
print_unexpected_response(port, type, CMDT_RSP_ACK, vdm_cmd);
dpm_set_mode_entry_done(port);