ReactOS 0.4.17-dev-1281-g065abb3
slots.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS xHCI Host Controller Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Device context base address array, scratchpad and slot map
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
10class XhciController;
11
14{
15public:
17 Create(
21
23 VOID Program();
24
25 VOID D0Entry();
28 VOID PreReset();
30 VOID PostReset();
32
36 SetSlot(
37 _In_ ULONG SlotId,
40
42 PVOID
43 LookupSlot(
44 _In_ ULONG SlotId) const;
45
46 /* From the interrupter DPC; routed to the device that owns the slot */
47 VOID
49 _In_ const XHCI_TRB* Event);
50 VOID
52 _In_ const XHCI_TRB* Event);
53
54
57
58private:
61
64 _In_ ULONG SlotId) const
65 {
66 return m_SlotMap != NULL && SlotId != 0 && SlotId <= m_SlotCount;
67 }
68
76};
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
@ Create
Definition: registry.c:563
XhciDmaBuffer * m_Dcbaa
Definition: slots.h:72
VOID D0Entry()
Definition: slots.cpp:161
VOID FreeTables()
Definition: slots.cpp:104
XhciController * m_Controller
Definition: slots.h:69
_IRQL_requires_(PASSIVE_LEVEL) VOID PreReset()
VOID OnDeviceNotificationEvent(_In_ const XHCI_TRB *Event)
Definition: slots.cpp:334
BOOLEAN IsValidSlot(_In_ ULONG SlotId) const
Definition: slots.h:63
_IRQL_requires_(PASSIVE_LEVEL) VOID PostReset()
ULONG m_SlotCount
Definition: slots.h:70
PVOID * m_SlotMap
Definition: slots.h:75
_In_ PVOID _In_ ULONG64 OutputContextAddress
Definition: slots.h:39
_IRQL_requires_max_(DISPATCH_LEVEL) NTSTATUS SetSlot(_In_ ULONG SlotId
XhciDmaBuffer * m_ScratchpadArray
Definition: slots.h:73
LIST_ENTRY m_ScratchpadPages
Definition: slots.h:74
VOID OnHostLost()
Definition: slots.cpp:247
VOID OnTransferEvent(_In_ const XHCI_TRB *Event)
VOID ZeroScratchpads()
Definition: slots.cpp:167
ULONG m_ScratchpadCount
Definition: slots.h:71
VOID DiscardState()
Definition: slots.cpp:183
VOID DisableAll()
Definition: slots.cpp:199
_IRQL_requires_max_(DISPATCH_LEVEL) PVOID LookupSlot(_In_ ULONG SlotId) const
VOID Program()
Definition: slots.cpp:148
NTSTATUS Prepare()
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
Definition: dispmprt.h:1287
#define NULL
Definition: types.h:112
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
Definition: hubucx.h:258
unsigned __int64 ULONG64
Definition: imports.h:198
#define _In_
Definition: no_sal2.h:158
Definition: typedefs.h:120
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller