CMD_TRB_EVALUATE_CONTEXT CmdTrbEvalu;\r
EVT_TRB_COMMAND_COMPLETION *EvtTrb;\r
INPUT_CONTEXT *InputContext;\r
+ DEVICE_CONTEXT *OutputContext;\r
EFI_PHYSICAL_ADDRESS PhyAddr;\r
\r
ASSERT (Xhc->UsbDevContext[SlotId].SlotId != 0);\r
//\r
// 4.6.7 Evaluate Context\r
//\r
- InputContext = Xhc->UsbDevContext[SlotId].InputContext;\r
+ InputContext = Xhc->UsbDevContext[SlotId].InputContext;\r
+ OutputContext = Xhc->UsbDevContext[SlotId].OutputContext;\r
ZeroMem (InputContext, sizeof (INPUT_CONTEXT));\r
\r
+ CopyMem (&InputContext->EP[0], &OutputContext->EP[0], sizeof (ENDPOINT_CONTEXT));\r
+\r
InputContext->InputControlContext.Dword2 |= BIT1;\r
InputContext->EP[0].MaxPacketSize = MaxPacketSize;\r
+ InputContext->EP[0].EPState = 0;\r
\r
ZeroMem (&CmdTrbEvalu, sizeof (CmdTrbEvalu));\r
PhyAddr = UsbHcGetPciAddrForHostAddr (Xhc->MemPool, InputContext, sizeof (INPUT_CONTEXT));\r
CMD_TRB_EVALUATE_CONTEXT CmdTrbEvalu;\r
EVT_TRB_COMMAND_COMPLETION *EvtTrb;\r
INPUT_CONTEXT_64 *InputContext;\r
+ DEVICE_CONTEXT_64 *OutputContext;\r
EFI_PHYSICAL_ADDRESS PhyAddr;\r
\r
ASSERT (Xhc->UsbDevContext[SlotId].SlotId != 0);\r
//\r
// 4.6.7 Evaluate Context\r
//\r
- InputContext = Xhc->UsbDevContext[SlotId].InputContext;\r
+ InputContext = Xhc->UsbDevContext[SlotId].InputContext;\r
+ OutputContext = Xhc->UsbDevContext[SlotId].OutputContext;\r
ZeroMem (InputContext, sizeof (INPUT_CONTEXT_64));\r
\r
+ CopyMem (&InputContext->EP[0], &OutputContext->EP[0], sizeof (ENDPOINT_CONTEXT_64));\r
+\r
InputContext->InputControlContext.Dword2 |= BIT1;\r
InputContext->EP[0].MaxPacketSize = MaxPacketSize;\r
+ InputContext->EP[0].EPState = 0;\r
\r
ZeroMem (&CmdTrbEvalu, sizeof (CmdTrbEvalu));\r
PhyAddr = UsbHcGetPciAddrForHostAddr (Xhc->MemPool, InputContext, sizeof (INPUT_CONTEXT_64));\r