diff options
-rw-r--r-- | common/usbc/usb_pe_drp_sm.c | 7 |
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; } |