14#define XHCI_SCRATCHPAD_BYTES 4096
44 DPRINT1(
"No common buffer for the DCBAA\n");
76 Array[
Index++] =
Page->LogicalAddress.QuadPart;
94 DPRINT(
"Slot table: %lu slots, %lu scratchpads, DCBAA at 0x%I64x\n",
216XhciSlotTable::PreReset()
231XhciSlotTable::PostReset()
262XhciSlotTable::SetSlot(
271 DPRINT1(
"Slot id %lu is outside the slot table\n", SlotId);
303XhciSlotTable::LookupSlot(
327 DPRINT1(
"Transfer event for slot %lu endpoint %lu code %lu has no device, dropped\n",
XhciCommonBuffer m_Buffers
BOOLEAN IsAccessible() const
XhciRegisters m_Registers
ULONG ScratchpadCount() const
VOID WriteOperational64(_In_ ULONG Offset, _In_ ULONG64 Value)
VOID WriteOperational32(_In_ ULONG Offset, _In_ ULONG Value)
XhciController * m_Controller
VOID OnDeviceNotificationEvent(_In_ const XHCI_TRB *Event)
NTSTATUS Create(_In_ XhciController *Controller)
BOOLEAN IsValidSlot(_In_ ULONG SlotId) const
_In_ PVOID _In_ ULONG64 OutputContextAddress
XhciDmaBuffer * m_ScratchpadArray
LIST_ENTRY m_ScratchpadPages
VOID OnTransferEvent(_In_ const XHCI_TRB *Event)
VOID OnTransferEvent(_In_ const XHCI_TRB *Event)
VOID ControllerResetStarting()
VOID OnDeviceNotificationEvent(_In_ const XHCI_TRB *Event)
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
#define NT_SUCCESS(StatCode)
#define _IRQL_requires_max_(irql)
#define _IRQL_requires_(irql)
#define InitializeListHead(ListHead)
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
#define ExFreePoolWithTag(_P, _T)
unsigned __int64 * PULONG64
static const ENTRY Entries[]
static PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
static XhciUsbDevice *NTAPI XhciSlotDevice(_In_ PVOID Entry)
#define XHCI_SCRATCHPAD_BYTES
PHYSICAL_ADDRESS LogicalAddress
struct _LIST_ENTRY * Flink
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
#define USB_ENDPOINT_TYPE_ISOCHRONOUS
for(Attempt=0;Attempt< UCX_LEGACY_NAME_ATTEMPTS;Attempt++)
_In_ WDFCOLLECTION _In_ ULONG Index
#define XHCI_TRB_ENDPOINT_MASK
#define XHCI_TRB_ENDPOINT_SHIFT
#define XHCI_DCBAA_ENTRIES
#define XHCI_EVENT_DATA_TYPE_MASK
#define XHCI_CONFIG_MAX_SLOTS_MASK
FORCEINLINE ULONG NTAPI XhciTrbCompletionCode(_In_ const XHCI_TRB *Trb)
FORCEINLINE ULONG NTAPI XhciTrbSlotId(_In_ const XHCI_TRB *Trb)