summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/usbc/usb_pe_drp_sm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index 1b3b30801e..b1aaf72c20 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -5217,6 +5217,7 @@ static void pe_vdm_response_entry(int port)
uint32_t *tx_payload;
uint16_t vdo_vdm_svid;
uint8_t vdo_cmd;
+ uint8_t vdo_opos = 0;
int cmd_type;
svdm_rsp_func func = NULL;
@@ -5251,6 +5252,7 @@ static void pe_vdm_response_entry(int port)
func = svdm_rsp.modes;
break;
case CMD_ENTER_MODE:
+ vdo_opos = PD_VDO_OPOS(rx_payload[0]);
func = svdm_rsp.enter_mode;
break;
case CMD_DP_STATUS:
@@ -5260,6 +5262,7 @@ static void pe_vdm_response_entry(int port)
func = svdm_rsp.amode->config;
break;
case CMD_EXIT_MODE:
+ vdo_opos = PD_VDO_OPOS(rx_payload[0]);
func = svdm_rsp.exit_mode;
break;
#ifdef CONFIG_USB_PD_ALT_MODE_DFP
@@ -5301,6 +5304,7 @@ static void pe_vdm_response_entry(int port)
1, /* Structured VDM */
VDO_SVDM_VERS(pd_get_vdo_ver(port, TCPC_TX_SOP))
| VDO_CMDT(CMDT_RSP_ACK) |
+ VDO_OPOS(vdo_opos) |
vdo_cmd);
else if (response_size_bytes == 0)
/* NAK */
@@ -5309,6 +5313,7 @@ static void pe_vdm_response_entry(int port)
1, /* Structured VDM */
VDO_SVDM_VERS(pd_get_vdo_ver(port, TCPC_TX_SOP))
| VDO_CMDT(CMDT_RSP_NAK) |
+ VDO_OPOS(vdo_opos) |
vdo_cmd);
else
/* BUSY */
@@ -5317,6 +5322,7 @@ static void pe_vdm_response_entry(int port)
1, /* Structured VDM */
VDO_SVDM_VERS(pd_get_vdo_ver(port, TCPC_TX_SOP))
| VDO_CMDT(CMDT_RSP_BUSY) |
+ VDO_OPOS(vdo_opos) |
vdo_cmd);
if (response_size_bytes <= 0)
@@ -5328,6 +5334,7 @@ static void pe_vdm_response_entry(int port)
1, /* Structured VDM */
VDO_SVDM_VERS(pd_get_vdo_ver(port, TCPC_TX_SOP)) |
VDO_CMDT(CMDT_RSP_NAK) |
+ VDO_OPOS(vdo_opos) |
vdo_cmd);
response_size_bytes = 4;
}