14#define XHCI_MAX_DCI 31
45 UCXUSBDEVICE
Handle()
const;
ULONG ContextSize() const
WDFREQUEST m_PendingRequest
VOID OnResetDeviceDone(_In_ const XhciCommand *Command)
BOOLEAN QueueTunnelStateDsm(_Inout_ PUSBDEVICE_UPDATE Payload)
VOID(NTAPI * PFN_RECONFIGURE_DONE)(_In_ PVOID Context, _In_ NTSTATUS Status)
VOID PrepareCommand(_In_ ULONG Type)
ULONG64 InputContextAddress() const
VOID BuildSlotContext(_Out_writes_bytes_(ContextSize) PVOID SlotContext, _In_ ULONG ContextSize) const
const XHCI_SLOT_CONTEXT * OutputSlot() const
NTSTATUS LostSlotStatus() const
BOOLEAN IsSlotEnabled() const
PendingKind m_PendingKind
VOID OnTransferEvent(_In_ const XHCI_TRB *Event)
PXHCI_SLOT_CONTEXT InputSlot() const
VOID ControllerResetStarting()
XhciUsbDevice * TtHub() const
VOID DisableDefaultEndpoint()
_IRQL_requires_max_(DISPATCH_LEVEL) VOID SetDisabled()
_IRQL_requires_max_(DISPATCH_LEVEL) VOID ReconfigureEndpoint(_In_ XhciEndpoint *Endpoint
volatile LONG m_EndpointCount
static VOID NTAPI ReconfigureCommandDone(_In_ XhciCommand *Command)
VOID DisableConfiguredEndpoints(_In_ BOOLEAN ClearTable)
VOID OnEvaluateContextDone(_In_ const XhciCommand *Command)
XhciDmaBuffer * m_ReconfigureInput
VOID OnDisableSlotDone(_In_ const XhciCommand *Command)
_IRQL_requires_max_(DISPATCH_LEVEL) XhciEndpoint *EndpointAt(_In_ ULONG Dci) const
const USB_DEVICE_DESCRIPTOR * DeviceDescriptor() const
VOID FinishReconfigure(_In_ NTSTATUS Status)
_IRQL_requires_(PASSIVE_LEVEL) VOID ControllerResetDone()
BOOLEAN m_ReconfigureBusy
VOID CompletePending(_In_ NTSTATUS Status)
_IRQL_requires_max_(DISPATCH_LEVEL) VOID AddEndpoint(_In_ XhciEndpoint *Endpoint)
VOID OnAddressDeviceDone(_In_ const XhciCommand *Command)
PVOID InputContext(_In_ ULONG Index) const
BOOLEAN WantsTunnelStateDsm(_In_ const USBDEVICE_UPDATE *Payload) const
_IRQL_requires_max_(DISPATCH_LEVEL) VOID RingDoorbell(_In_ ULONG Dci
_IRQL_requires_(PASSIVE_LEVEL) VOID RunTunnelStateDsm(_Inout_ PUSBDEVICE_UPDATE Payload)
NTSTATUS SubmitAddressDevice(_In_ BOOLEAN BlockSetAddress)
ULONG m_ReconfigureQueued
static XhciUsbDevice * FromUcx(_In_ UCXUSBDEVICE UsbDevice)
static EVT_WDF_WORKITEM TunnelDsmWorker
VOID DisableEndpointList(_In_ ULONG Count, _In_reads_(Count) UCXENDPOINT *Endpoints)
PVOID OutputContext(_In_ ULONG Dci) const
VOID ApplyUpdate(_Inout_ PUSBDEVICE_UPDATE Payload)
_IRQL_requires_(PASSIVE_LEVEL) NTSTATUS Initialize(_In_ XhciController *Controller
ULONG64 HardwareDequeuePointer(_In_ ULONG Dci) const
USB_DEVICE_SPEED Speed() const
XhciEndpoint * m_Endpoints[XHCI_MAX_DCI+1]
XhciController * m_Controller
VOID EndpointsConfigure(_In_ WDFREQUEST Request, _Inout_ PENDPOINTS_CONFIGURE Payload)
static VOID NTAPI CommandDone(_In_ XhciCommand *Command)
VOID SubmitSecondConfigure()
VOID SubmitDisableSlot(_In_ AfterDisable Next)
NTSTATUS BuildAddressContext()
AfterDisable m_AfterDisable
_In_ _In_ NTSTATUS _In_ PVOID Context
KSPIN_LOCK m_ReconfigureLock
PXHCI_INPUT_CONTROL_CONTEXT InputControl() const
XhciCommand m_ReconfigureCommand
VOID RecordEnabledEndpoints(_In_ const ENDPOINTS_CONFIGURE *Payload)
VOID OnEnableSlotDone(_In_ const XhciCommand *Command)
VOID HubInfo(_In_ WDFREQUEST Request, _In_ const USBDEVICE_HUB_INFO *Payload)
VOID SetPending(_In_ WDFREQUEST Request, _In_ PVOID Payload, _In_ PendingKind Kind, _In_ BOOLEAN MustSucceed)
_IRQL_requires_max_(DISPATCH_LEVEL) VOID RemoveEndpoint(_In_ XhciEndpoint *Endpoint)
const USB_DEVICE_PORT_PATH * PortPath() const
VOID OnConfigureEndpointDone(_In_ const XhciCommand *Command)
_In_ _In_ NTSTATUS Status
ReconfigureWaiter m_ReconfigureWaiters[XHCI_MAX_DCI+1]
UCXUSBDEVICE Handle() const
USB_DEVICE_DESCRIPTOR m_DeviceDescriptor
VOID StartReconfigure(_In_ const ReconfigureWaiter *Waiter)
XhciController * Controller() const
ULONG ContextEntries() const
ReconfigureWaiter m_ReconfigureCurrent
VOID OnDeviceNotificationEvent(_In_ const XHCI_TRB *Event)
ULONG EndpointState(_In_ ULONG Dci) const
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
static const WCHAR Cleanup[]
_In_ UCXUSBDEVICE UsbDevice
_In_ UCXHUB_DEVICE_CONTEXT _In_ UCXENDPOINT Endpoint
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define _Out_writes_bytes_(s)
PACPI_METHOD_ARGUMENT Next
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ ULONG Index