TianoCore EDK2 master
Loading...
Searching...
No Matches
XhciSched.c File Reference
#include "XhcPeim.h"

Go to the source code of this file.

Functions

URBXhcPeiCreateCmdTrb (IN PEI_XHC_DEV *Xhc, IN TRB_TEMPLATE *CmdTrb)
 
EFI_STATUS XhcPeiCmdTransfer (IN PEI_XHC_DEV *Xhc, IN TRB_TEMPLATE *CmdTrb, IN UINTN Timeout, OUT TRB_TEMPLATE **EvtTrb)
 
URBXhcPeiCreateUrb (IN PEI_XHC_DEV *Xhc, IN UINT8 BusAddr, IN UINT8 EpAddr, IN UINT8 DevSpeed, IN UINTN MaxPacket, IN UINTN Type, IN EFI_USB_DEVICE_REQUEST *Request, IN VOID *Data, IN UINTN DataLen, IN EFI_ASYNC_USB_TRANSFER_CALLBACK Callback, IN VOID *Context)
 
VOID XhcPeiFreeUrb (IN PEI_XHC_DEV *Xhc, IN URB *Urb)
 
EFI_STATUS XhcPeiCreateTransferTrb (IN PEI_XHC_DEV *Xhc, IN URB *Urb)
 
EFI_STATUS XhcPeiRecoverHaltedEndpoint (IN PEI_XHC_DEV *Xhc, IN URB *Urb)
 
EFI_STATUS XhcPeiDequeueTrbFromEndpoint (IN PEI_XHC_DEV *Xhc, IN URB *Urb)
 
BOOLEAN XhcPeiIsTransferRingTrb (IN TRB_TEMPLATE *Trb, IN URB *Urb)
 
BOOLEAN XhcPeiCheckUrbResult (IN PEI_XHC_DEV *Xhc, IN URB *Urb)
 
EFI_STATUS XhcPeiExecTransfer (IN PEI_XHC_DEV *Xhc, IN BOOLEAN CmdTransfer, IN URB *Urb, IN UINTN Timeout)
 
EFI_STATUS XhcPeiPollPortStatusChange (IN PEI_XHC_DEV *Xhc, IN USB_DEV_ROUTE ParentRouteChart, IN UINT8 Port, IN EFI_USB_PORT_STATUS *PortState)
 
UINT8 XhcPeiEndpointToDci (IN UINT8 EpAddr, IN EFI_USB_DATA_DIRECTION Direction)
 
UINT8 XhcPeiBusDevAddrToSlotId (IN PEI_XHC_DEV *Xhc, IN UINT8 BusDevAddr)
 
UINT8 XhcPeiRouteStringToSlotId (IN PEI_XHC_DEV *Xhc, IN USB_DEV_ROUTE RouteString)
 
VOID XhcPeiRingDoorBell (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 Dci)
 
EFI_STATUS XhcPeiInitializeDeviceSlot (IN PEI_XHC_DEV *Xhc, IN USB_DEV_ROUTE ParentRouteChart, IN UINT16 ParentPort, IN USB_DEV_ROUTE RouteChart, IN UINT8 DeviceSpeed)
 
EFI_STATUS XhcPeiInitializeDeviceSlot64 (IN PEI_XHC_DEV *Xhc, IN USB_DEV_ROUTE ParentRouteChart, IN UINT16 ParentPort, IN USB_DEV_ROUTE RouteChart, IN UINT8 DeviceSpeed)
 
EFI_STATUS XhcPeiDisableSlotCmd (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId)
 
EFI_STATUS XhcPeiDisableSlotCmd64 (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId)
 
EFI_STATUS XhcPeiSetConfigCmd (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 DeviceSpeed, IN USB_CONFIG_DESCRIPTOR *ConfigDesc)
 
EFI_STATUS XhcPeiSetConfigCmd64 (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 DeviceSpeed, IN USB_CONFIG_DESCRIPTOR *ConfigDesc)
 
EFI_STATUS XhcPeiEvaluateContext (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT32 MaxPacketSize)
 
EFI_STATUS XhcPeiEvaluateContext64 (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT32 MaxPacketSize)
 
EFI_STATUS XhcPeiConfigHubContext (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 PortNum, IN UINT8 TTT, IN UINT8 MTT)
 
EFI_STATUS XhcPeiConfigHubContext64 (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 PortNum, IN UINT8 TTT, IN UINT8 MTT)
 
EFI_STATUS EFIAPI XhcPeiStopEndpoint (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 Dci)
 
EFI_STATUS EFIAPI XhcPeiResetEndpoint (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 Dci)
 
EFI_STATUS EFIAPI XhcPeiSetTrDequeuePointer (IN PEI_XHC_DEV *Xhc, IN UINT8 SlotId, IN UINT8 Dci, IN URB *Urb)
 
EFI_STATUS XhcPeiCheckNewEvent (IN PEI_XHC_DEV *Xhc, IN EVENT_RING *EvtRing, OUT TRB_TEMPLATE **NewEvtTrb)
 
EFI_STATUS XhcPeiSyncEventRing (IN PEI_XHC_DEV *Xhc, IN EVENT_RING *EvtRing)
 
VOID XhcPeiFreeEventRing (IN PEI_XHC_DEV *Xhc, IN EVENT_RING *EventRing)
 
VOID XhcPeiCreateEventRing (IN PEI_XHC_DEV *Xhc, OUT EVENT_RING *EventRing)
 
EFI_STATUS XhcPeiSyncTrsRing (IN PEI_XHC_DEV *Xhc, IN TRANSFER_RING *TrsRing)
 
VOID XhcPeiCreateTransferRing (IN PEI_XHC_DEV *Xhc, IN UINTN TrbNum, OUT TRANSFER_RING *TransferRing)
 
VOID XhcPeiInitSched (IN PEI_XHC_DEV *Xhc)
 
VOID XhcPeiFreeSched (IN PEI_XHC_DEV *Xhc)
 

Detailed Description

PEIM to produce gPeiUsb2HostControllerPpiGuid based on gPeiUsbControllerPpiGuid which is used to enable recovery function from USB Drivers.

Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.
Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file XhciSched.c.

Function Documentation

◆ XhcPeiBusDevAddrToSlotId()

UINT8 XhcPeiBusDevAddrToSlotId ( IN PEI_XHC_DEV Xhc,
IN UINT8  BusDevAddr 
)

Find out the actual device address according to the requested device address from UsbBus.

Parameters
XhcThe XHCI device.
BusDevAddrThe requested device address by UsbBus upper driver.
Returns
The actual device address assigned to the device.

Definition at line 979 of file XhciSched.c.

◆ XhcPeiCheckNewEvent()

EFI_STATUS XhcPeiCheckNewEvent ( IN PEI_XHC_DEV Xhc,
IN EVENT_RING EvtRing,
OUT TRB_TEMPLATE **  NewEvtTrb 
)

Check if there is a new generated event.

Parameters
XhcThe XHCI device.
EvtRingThe event ring to check.
NewEvtTrbThe new event TRB found.
Return values
EFI_SUCCESSFound a new event TRB at the event ring.
EFI_NOT_READYThe event ring has no new event.

Definition at line 2561 of file XhciSched.c.

◆ XhcPeiCheckUrbResult()

BOOLEAN XhcPeiCheckUrbResult ( IN PEI_XHC_DEV Xhc,
IN URB Urb 
)

Check the URB's execution result and update the URB's result accordingly.

Parameters
XhcThe XHCI device.
UrbThe URB to check result.
Returns
Whether the result of URB transfer is finialized.

Definition at line 623 of file XhciSched.c.

◆ XhcPeiCmdTransfer()

EFI_STATUS XhcPeiCmdTransfer ( IN PEI_XHC_DEV Xhc,
IN TRB_TEMPLATE CmdTrb,
IN UINTN  Timeout,
OUT TRB_TEMPLATE **  EvtTrb 
)

Execute a XHCI cmd TRB pointed by CmdTrb.

Parameters
XhcThe XHCI device.
CmdTrbThe cmd TRB to be executed.
TimeoutIndicates the maximum time, in millisecond, which the transfer is allowed to complete.
EvtTrbThe event TRB corresponding to the cmd TRB.
Return values
EFI_SUCCESSThe transfer was completed successfully.
EFI_INVALID_PARAMETERSome parameters are invalid.
EFI_TIMEOUTThe transfer failed due to timeout.
EFI_DEVICE_ERRORThe transfer failed due to host controller error.

Definition at line 65 of file XhciSched.c.

◆ XhcPeiConfigHubContext()

EFI_STATUS XhcPeiConfigHubContext ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  PortNum,
IN UINT8  TTT,
IN UINT8  MTT 
)

Evaluate the slot context for hub device through XHCI's Configure_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be configured.
PortNumThe total number of downstream port supported by the hub.
TTTThe TT think time of the hub device.
MTTThe multi-TT of the hub device.
Return values
EFI_SUCCESSSuccessfully configure the hub device's slot context.

Definition at line 2279 of file XhciSched.c.

◆ XhcPeiConfigHubContext64()

EFI_STATUS XhcPeiConfigHubContext64 ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  PortNum,
IN UINT8  TTT,
IN UINT8  MTT 
)

Evaluate the slot context for hub device through XHCI's Configure_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be configured.
PortNumThe total number of downstream port supported by the hub.
TTTThe TT think time of the hub device.
MTTThe multi-TT of the hub device.
Return values
EFI_SUCCESSSuccessfully configure the hub device's slot context.

Definition at line 2348 of file XhciSched.c.

◆ XhcPeiCreateCmdTrb()

URB * XhcPeiCreateCmdTrb ( IN PEI_XHC_DEV Xhc,
IN TRB_TEMPLATE CmdTrb 
)

Create a command transfer TRB to support XHCI command interfaces.

Parameters
XhcThe XHCI device.
CmdTrbThe cmd TRB to be executed.
Returns
Created URB or NULL.

Definition at line 24 of file XhciSched.c.

◆ XhcPeiCreateEventRing()

VOID XhcPeiCreateEventRing ( IN PEI_XHC_DEV Xhc,
OUT EVENT_RING EventRing 
)

Create XHCI event ring.

Parameters
XhcThe XHCI device.
EventRingThe created event ring.

Definition at line 2670 of file XhciSched.c.

◆ XhcPeiCreateTransferRing()

VOID XhcPeiCreateTransferRing ( IN PEI_XHC_DEV Xhc,
IN UINTN  TrbNum,
OUT TRANSFER_RING TransferRing 
)

Create XHCI transfer ring.

Parameters
XhcThe XHCI Device.
TrbNumThe number of TRB in the ring.
TransferRingThe created transfer ring.

Definition at line 2835 of file XhciSched.c.

◆ XhcPeiCreateTransferTrb()

EFI_STATUS XhcPeiCreateTransferTrb ( IN PEI_XHC_DEV Xhc,
IN URB Urb 
)

Create a transfer TRB.

Parameters
XhcThe XHCI device
UrbThe urb used to construct the transfer TRB.
Returns
Created TRB or NULL

Definition at line 212 of file XhciSched.c.

◆ XhcPeiCreateUrb()

URB * XhcPeiCreateUrb ( IN PEI_XHC_DEV Xhc,
IN UINT8  BusAddr,
IN UINT8  EpAddr,
IN UINT8  DevSpeed,
IN UINTN  MaxPacket,
IN UINTN  Type,
IN EFI_USB_DEVICE_REQUEST Request,
IN VOID *  Data,
IN UINTN  DataLen,
IN EFI_ASYNC_USB_TRANSFER_CALLBACK  Callback,
IN VOID *  Context 
)

Create a new URB for a new transaction.

Parameters
XhcThe XHCI device
BusAddrThe logical device address assigned by UsbBus driver
EpAddrEndpoint addrress
DevSpeedThe device speed
MaxPacketThe max packet length of the endpoint
TypeThe transaction type
RequestThe standard USB request for control transfer
DataThe user data to transfer
DataLenThe length of data buffer
CallbackThe function to call when data is transferred
ContextThe context to the callback
Returns
Created URB or NULL

Definition at line 131 of file XhciSched.c.

◆ XhcPeiDequeueTrbFromEndpoint()

EFI_STATUS XhcPeiDequeueTrbFromEndpoint ( IN PEI_XHC_DEV Xhc,
IN URB Urb 
)

System software shall use a Stop Endpoint Command (section 4.6.9) and the Set TR Dequeue Pointer Command (section 4.6.10) to remove the timed-out TDs from the xHC transfer ring. The next write to the Doorbell of the Endpoint will transition the Endpoint Context from the Stopped to the Running state.

Parameters
XhcThe XHCI device.
UrbThe urb which doesn't get completed in a specified timeout range.
Return values
EFI_SUCCESSThe dequeuing of the TDs is successful.
OthersFailed to stop the endpoint and dequeue the TDs.

Definition at line 532 of file XhciSched.c.

◆ XhcPeiDisableSlotCmd()

EFI_STATUS XhcPeiDisableSlotCmd ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId 
)

Disable the specified device slot.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be disabled.
Return values
EFI_SUCCESSSuccessfully disable the device slot.

Definition at line 1497 of file XhciSched.c.

◆ XhcPeiDisableSlotCmd64()

EFI_STATUS XhcPeiDisableSlotCmd64 ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId 
)

Disable the specified device slot.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be disabled.
Return values
EFI_SUCCESSSuccessfully disable the device slot.

Definition at line 1604 of file XhciSched.c.

◆ XhcPeiEndpointToDci()

UINT8 XhcPeiEndpointToDci ( IN UINT8  EpAddr,
IN EFI_USB_DATA_DIRECTION  Direction 
)

Calculate the device context index by endpoint address and direction.

Parameters
EpAddrThe target endpoint number.
DirectionThe direction of the target endpoint.
Returns
The device context index of endpoint.

Definition at line 948 of file XhciSched.c.

◆ XhcPeiEvaluateContext()

EFI_STATUS XhcPeiEvaluateContext ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT32  MaxPacketSize 
)

Evaluate the endpoint 0 context through XHCI's Evaluate_Context cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be evaluated.
MaxPacketSizeThe max packet size supported by the device control transfer.
Return values
EFI_SUCCESSSuccessfully evaluate the device endpoint 0.

Definition at line 2167 of file XhciSched.c.

◆ XhcPeiEvaluateContext64()

EFI_STATUS XhcPeiEvaluateContext64 ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT32  MaxPacketSize 
)

Evaluate the endpoint 0 context through XHCI's Evaluate_Context cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be evaluated.
MaxPacketSizeThe max packet size supported by the device control transfer.
Return values
EFI_SUCCESSSuccessfully evaluate the device endpoint 0.

Definition at line 2222 of file XhciSched.c.

◆ XhcPeiExecTransfer()

EFI_STATUS XhcPeiExecTransfer ( IN PEI_XHC_DEV Xhc,
IN BOOLEAN  CmdTransfer,
IN URB Urb,
IN UINTN  Timeout 
)

Execute the transfer by polling the URB. This is a synchronous operation.

Parameters
XhcThe XHCI device.
CmdTransferThe executed URB is for cmd transfer or not.
UrbThe URB to execute.
TimeoutThe time to wait before abort, in millisecond.
Returns
EFI_DEVICE_ERROR The transfer failed due to transfer error.
EFI_TIMEOUT The transfer failed due to time out.
EFI_SUCCESS The transfer finished OK.

Definition at line 797 of file XhciSched.c.

◆ XhcPeiFreeEventRing()

VOID XhcPeiFreeEventRing ( IN PEI_XHC_DEV Xhc,
IN EVENT_RING EventRing 
)

Free XHCI event ring.

Parameters
XhcThe XHCI device.
EventRingThe event ring to be freed.

Definition at line 2642 of file XhciSched.c.

◆ XhcPeiFreeSched()

VOID XhcPeiFreeSched ( IN PEI_XHC_DEV Xhc)

Free the resouce allocated at initializing schedule.

Parameters
XhcThe XHCI device.

Definition at line 3049 of file XhciSched.c.

◆ XhcPeiFreeUrb()

VOID XhcPeiFreeUrb ( IN PEI_XHC_DEV Xhc,
IN URB Urb 
)

Free an allocated URB.

Parameters
XhcThe XHCI device.
UrbThe URB to free.

Definition at line 188 of file XhciSched.c.

◆ XhcPeiInitializeDeviceSlot()

EFI_STATUS XhcPeiInitializeDeviceSlot ( IN PEI_XHC_DEV Xhc,
IN USB_DEV_ROUTE  ParentRouteChart,
IN UINT16  ParentPort,
IN USB_DEV_ROUTE  RouteChart,
IN UINT8  DeviceSpeed 
)

Assign and initialize the device slot for a new device.

Parameters
XhcThe XHCI device.
ParentRouteChartThe route string pointed to the parent device.
ParentPortThe port at which the device is located.
RouteChartThe route string pointed to the device.
DeviceSpeedThe device speed.
Return values
EFI_SUCCESSSuccessfully assign a slot to the device and assign an address to it.
OthersFail to initialize device slot.

Definition at line 1071 of file XhciSched.c.

◆ XhcPeiInitializeDeviceSlot64()

EFI_STATUS XhcPeiInitializeDeviceSlot64 ( IN PEI_XHC_DEV Xhc,
IN USB_DEV_ROUTE  ParentRouteChart,
IN UINT16  ParentPort,
IN USB_DEV_ROUTE  RouteChart,
IN UINT8  DeviceSpeed 
)

Assign and initialize the device slot for a new device.

Parameters
XhcThe XHCI device.
ParentRouteChartThe route string pointed to the parent device.
ParentPortThe port at which the device is located.
RouteChartThe route string pointed to the device.
DeviceSpeedThe device speed.
Return values
EFI_SUCCESSSuccessfully assign a slot to the device and assign an address to it.
OthersFail to initialize device slot.

Definition at line 1286 of file XhciSched.c.

◆ XhcPeiInitSched()

VOID XhcPeiInitSched ( IN PEI_XHC_DEV Xhc)

Initialize the XHCI host controller for schedule.

Parameters
XhcThe XHCI device to be initialized.

Definition at line 2882 of file XhciSched.c.

◆ XhcPeiIsTransferRingTrb()

BOOLEAN XhcPeiIsTransferRingTrb ( IN TRB_TEMPLATE Trb,
IN URB Urb 
)

Check if the Trb is a transaction of the URB.

Parameters
TrbThe TRB to be checked
UrbThe transfer ring to be checked.
Return values
TRUEIt is a transaction of the URB.
FALSEIt is not any transaction of the URB.

Definition at line 589 of file XhciSched.c.

◆ XhcPeiPollPortStatusChange()

EFI_STATUS XhcPeiPollPortStatusChange ( IN PEI_XHC_DEV Xhc,
IN USB_DEV_ROUTE  ParentRouteChart,
IN UINT8  Port,
IN EFI_USB_PORT_STATUS PortState 
)

Monitor the port status change. Enable/Disable device slot if there is a device attached/detached.

Parameters
XhcThe XHCI device.
ParentRouteChartThe route string pointed to the parent device if it exists.
PortThe port to be polled.
PortStateThe port state.
Return values
EFI_SUCCESSSuccessfully enable/disable device slot according to port state.
OthersShould not appear.

Definition at line 863 of file XhciSched.c.

◆ XhcPeiRecoverHaltedEndpoint()

EFI_STATUS XhcPeiRecoverHaltedEndpoint ( IN PEI_XHC_DEV Xhc,
IN URB Urb 
)

System software shall use a Reset Endpoint Command (section 4.11.4.7) to remove the Halted condition in the xHC. After the successful completion of the Reset Endpoint Command, the Endpoint Context is transitioned from the Halted to the Stopped state and the Transfer Ring of the endpoint is reenabled. The next write to the Doorbell of the Endpoint will transition the Endpoint Context from the Stopped to the Running state.

Parameters
XhcThe XHCI device.
UrbThe urb which makes the endpoint halted.
Return values
EFI_SUCCESSThe recovery is successful.
OthersFailed to recovery halted endpoint.

Definition at line 472 of file XhciSched.c.

◆ XhcPeiResetEndpoint()

EFI_STATUS EFIAPI XhcPeiResetEndpoint ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  Dci 
)

Reset endpoint through XHCI's Reset_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id of the target device.
DciThe device context index of the target slot or endpoint.
Return values
EFI_SUCCESSReset endpoint successfully.
OthersFailed to reset endpoint.

Definition at line 2463 of file XhciSched.c.

◆ XhcPeiRingDoorBell()

VOID XhcPeiRingDoorBell ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  Dci 
)

Ring the door bell to notify XHCI there is a transaction to be executed.

Parameters
XhcThe XHCI device.
SlotIdThe slot id of the target device.
DciThe device context index of the target slot or endpoint.

Definition at line 1044 of file XhciSched.c.

◆ XhcPeiRouteStringToSlotId()

UINT8 XhcPeiRouteStringToSlotId ( IN PEI_XHC_DEV Xhc,
IN USB_DEV_ROUTE  RouteString 
)

Find out the slot id according to the device's route string.

Parameters
XhcThe XHCI device.
RouteStringThe route string described the device location.
Returns
The slot id used by the device.

Definition at line 1012 of file XhciSched.c.

◆ XhcPeiSetConfigCmd()

EFI_STATUS XhcPeiSetConfigCmd ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  DeviceSpeed,
IN USB_CONFIG_DESCRIPTOR ConfigDesc 
)

Configure all the device endpoints through XHCI's Configure_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be configured.
DeviceSpeedThe device's speed.
ConfigDescThe pointer to the usb device configuration descriptor.
Return values
EFI_SUCCESSSuccessfully configure all the device endpoints.

Definition at line 1713 of file XhciSched.c.

◆ XhcPeiSetConfigCmd64()

EFI_STATUS XhcPeiSetConfigCmd64 ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  DeviceSpeed,
IN USB_CONFIG_DESCRIPTOR ConfigDesc 
)

Configure all the device endpoints through XHCI's Configure_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id to be configured.
DeviceSpeedThe device's speed.
ConfigDescThe pointer to the usb device configuration descriptor.
Return values
EFI_SUCCESSSuccessfully configure all the device endpoints.

Definition at line 1939 of file XhciSched.c.

◆ XhcPeiSetTrDequeuePointer()

EFI_STATUS EFIAPI XhcPeiSetTrDequeuePointer ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  Dci,
IN URB Urb 
)

Set transfer ring dequeue pointer through XHCI's Set_Tr_Dequeue_Pointer cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id of the target device.
DciThe device context index of the target slot or endpoint.
UrbThe dequeue pointer of the transfer ring specified by the urb to be updated.
Return values
EFI_SUCCESSSet transfer ring dequeue pointer succeeds.
OthersFailed to set transfer ring dequeue pointer.

Definition at line 2511 of file XhciSched.c.

◆ XhcPeiStopEndpoint()

EFI_STATUS EFIAPI XhcPeiStopEndpoint ( IN PEI_XHC_DEV Xhc,
IN UINT8  SlotId,
IN UINT8  Dci 
)

Stop endpoint through XHCI's Stop_Endpoint cmd.

Parameters
XhcThe XHCI device.
SlotIdThe slot id of the target device.
DciThe device context index of the target slot or endpoint.
Return values
EFI_SUCCESSStop endpoint successfully.
OthersFailed to stop endpoint.

Definition at line 2417 of file XhciSched.c.

◆ XhcPeiSyncEventRing()

EFI_STATUS XhcPeiSyncEventRing ( IN PEI_XHC_DEV Xhc,
IN EVENT_RING EvtRing 
)

Synchronize the specified event ring to update the enqueue and dequeue pointer.

Parameters
XhcThe XHCI device.
EvtRingThe event ring to sync.
Return values
EFI_SUCCESSThe event ring is synchronized successfully.

Definition at line 2596 of file XhciSched.c.

◆ XhcPeiSyncTrsRing()

EFI_STATUS XhcPeiSyncTrsRing ( IN PEI_XHC_DEV Xhc,
IN TRANSFER_RING TrsRing 
)

Synchronize the specified transfer ring to update the enqueue and dequeue pointer.

Parameters
XhcThe XHCI device.
TrsRingThe transfer ring to sync.
Return values
EFI_SUCCESSThe transfer ring is synchronized successfully.

Definition at line 2772 of file XhciSched.c.