Sync with trunk r63383 .
[reactos.git] / drivers / bus / acpi / include / acpisys.h
1 /*
2 * PROJECT: ReactOS ACPI bus driver
3 * FILE: acpi/ospm/include/acpisys.h
4 * PURPOSE: ACPI bus driver definitions
5 */
6
7 extern UNICODE_STRING ProcessorHardwareIds;
8 extern LPWSTR ProcessorNameString;
9
10 typedef enum _DEVICE_PNP_STATE {
11
12 NotStarted = 0, // Not started yet
13 Started, // Device has received the START_DEVICE IRP
14 StopPending, // Device has received the QUERY_STOP IRP
15 Stopped, // Device has received the STOP_DEVICE IRP
16 RemovalPending, // Device has received the QUERY_REMOVE IRP
17 UnKnown // Unknown state
18
19 } DEVICE_PNP_STATE;
20
21 //
22 // A common header for the device extensions of the PDOs and FDO
23 //
24
25 typedef struct _COMMON_DEVICE_DATA
26 {
27 PDEVICE_OBJECT Self;
28 BOOLEAN IsFDO;
29 DEVICE_PNP_STATE DevicePnPState;
30 DEVICE_PNP_STATE PreviousPnPState;
31 SYSTEM_POWER_STATE SystemPowerState;
32 DEVICE_POWER_STATE DevicePowerState;
33 } COMMON_DEVICE_DATA, *PCOMMON_DEVICE_DATA;
34
35 typedef struct _PDO_DEVICE_DATA
36 {
37 COMMON_DEVICE_DATA Common;
38 ACPI_HANDLE AcpiHandle;
39 // A back pointer to the bus
40 PDEVICE_OBJECT ParentFdo;
41 // An array of (zero terminated wide character strings).
42 // The array itself also null terminated
43 PWCHAR HardwareIDs;
44 // Link point to hold all the PDOs for a single bus together
45 LIST_ENTRY Link;
46 ULONG InterfaceRefCount;
47 UNICODE_STRING InterfaceName;
48
49 } PDO_DEVICE_DATA, *PPDO_DEVICE_DATA;
50
51 //
52 // The device extension of the bus itself. From whence the PDO's are born.
53 //
54
55 typedef struct _FDO_DEVICE_DATA
56 {
57 COMMON_DEVICE_DATA Common;
58 PDEVICE_OBJECT UnderlyingPDO;
59
60 // The underlying bus PDO and the actual device object to which our
61 // FDO is attached
62 PDEVICE_OBJECT NextLowerDriver;
63
64 // List of PDOs created so far
65 LIST_ENTRY ListOfPDOs;
66
67 // The PDOs currently enumerated.
68 ULONG NumPDOs;
69
70 // A synchronization for access to the device extension.
71 FAST_MUTEX Mutex;
72
73 } FDO_DEVICE_DATA, *PFDO_DEVICE_DATA;
74
75 #define FDO_FROM_PDO(pdoData) \
76 ((PFDO_DEVICE_DATA) (pdoData)->ParentFdo->DeviceExtension)
77
78 #define INITIALIZE_PNP_STATE(_Data_) \
79 (_Data_).DevicePnPState = NotStarted;\
80 (_Data_).PreviousPnPState = NotStarted;
81
82 #define SET_NEW_PNP_STATE(_Data_, _state_) \
83 (_Data_).PreviousPnPState = (_Data_).DevicePnPState;\
84 (_Data_).DevicePnPState = (_state_);
85
86 #define RESTORE_PREVIOUS_PNP_STATE(_Data_) \
87 (_Data_).DevicePnPState = (_Data_).PreviousPnPState;\
88
89 /* acpienum.c */
90
91 NTSTATUS
92 ACPIEnumerateDevices(
93 PFDO_DEVICE_DATA DeviceExtension);
94
95 NTSTATUS
96 NTAPI
97 Bus_PDO_EvalMethod(PPDO_DEVICE_DATA DeviceData,
98 PIRP Irp);
99
100 NTSTATUS
101 NTAPI
102 Bus_CreateClose (
103 PDEVICE_OBJECT DeviceObject,
104 PIRP Irp
105 );
106
107 VOID
108 Bus_DriverUnload (
109 PDRIVER_OBJECT DriverObject
110 );
111
112 PCHAR
113 PnPMinorFunctionString (
114 UCHAR MinorFunction
115 );
116
117 NTSTATUS
118 NTAPI
119 Bus_AddDevice(
120 PDRIVER_OBJECT DriverObject,
121 PDEVICE_OBJECT PhysicalDeviceObject
122 );
123
124 NTSTATUS
125 Bus_SendIrpSynchronously (
126 PDEVICE_OBJECT DeviceObject,
127 PIRP Irp
128 );
129
130 NTSTATUS
131 NTAPI
132 Bus_PnP (
133 PDEVICE_OBJECT DeviceObject,
134 PIRP Irp
135 );
136
137 NTSTATUS
138 NTAPI
139 Bus_CompletionRoutine(
140 PDEVICE_OBJECT DeviceObject,
141 PIRP Irp,
142 PVOID Context
143 );
144
145 VOID
146 Bus_InitializePdo (
147 PDEVICE_OBJECT Pdo,
148 PFDO_DEVICE_DATA FdoData
149 );
150
151
152 void
153 Bus_RemoveFdo (
154 PFDO_DEVICE_DATA FdoData
155 );
156
157 NTSTATUS
158 Bus_DestroyPdo (
159 PDEVICE_OBJECT Device,
160 PPDO_DEVICE_DATA PdoData
161 );
162
163
164 NTSTATUS
165 Bus_FDO_PnP (
166 PDEVICE_OBJECT DeviceObject,
167 PIRP Irp,
168 PIO_STACK_LOCATION IrpStack,
169 PFDO_DEVICE_DATA DeviceData
170 );
171
172
173 NTSTATUS
174 Bus_StartFdo (
175 PFDO_DEVICE_DATA FdoData,
176 PIRP Irp );
177
178 PCHAR
179 DbgDeviceIDString(
180 BUS_QUERY_ID_TYPE Type
181 );
182
183 PCHAR
184 DbgDeviceRelationString(
185 DEVICE_RELATION_TYPE Type
186 );
187
188 NTSTATUS
189 Bus_FDO_Power (
190 PFDO_DEVICE_DATA FdoData,
191 PIRP Irp
192 );
193
194 NTSTATUS
195 Bus_PDO_Power (
196 PPDO_DEVICE_DATA PdoData,
197 PIRP Irp
198 );
199
200 NTSTATUS
201 NTAPI
202 Bus_Power (
203 PDEVICE_OBJECT DeviceObject,
204 PIRP Irp
205 );
206
207 PCHAR
208 PowerMinorFunctionString (
209 UCHAR MinorFunction
210 );
211
212 PCHAR
213 DbgSystemPowerString(
214 SYSTEM_POWER_STATE Type
215 );
216
217 PCHAR
218 DbgDevicePowerString(
219 DEVICE_POWER_STATE Type
220 );
221
222 NTSTATUS
223 Bus_PDO_PnP (
224 PDEVICE_OBJECT DeviceObject,
225 PIRP Irp,
226 PIO_STACK_LOCATION IrpStack,
227 PPDO_DEVICE_DATA DeviceData
228 );
229
230 NTSTATUS
231 Bus_PDO_QueryDeviceCaps(
232 PPDO_DEVICE_DATA DeviceData,
233 PIRP Irp );
234
235 NTSTATUS
236 Bus_PDO_QueryDeviceId(
237 PPDO_DEVICE_DATA DeviceData,
238 PIRP Irp );
239
240
241 NTSTATUS
242 Bus_PDO_QueryDeviceText(
243 PPDO_DEVICE_DATA DeviceData,
244 PIRP Irp );
245
246 NTSTATUS
247 Bus_PDO_QueryResources(
248 PPDO_DEVICE_DATA DeviceData,
249 PIRP Irp );
250
251 NTSTATUS
252 Bus_PDO_QueryResourceRequirements(
253 PPDO_DEVICE_DATA DeviceData,
254 PIRP Irp );
255
256 NTSTATUS
257 Bus_PDO_QueryDeviceRelations(
258 PPDO_DEVICE_DATA DeviceData,
259 PIRP Irp );
260
261 NTSTATUS
262 Bus_PDO_QueryBusInformation(
263 PPDO_DEVICE_DATA DeviceData,
264 PIRP Irp );
265
266 NTSTATUS
267 Bus_GetDeviceCapabilities(
268 PDEVICE_OBJECT DeviceObject,
269 PDEVICE_CAPABILITIES DeviceCapabilities
270 );
271
272 NTSTATUS
273 Bus_PDO_QueryInterface(
274 PPDO_DEVICE_DATA DeviceData,
275 PIRP Irp );
276
277 BOOLEAN
278 Bus_GetCrispinessLevel(
279 PVOID Context,
280 PUCHAR Level
281 );
282 BOOLEAN
283 Bus_SetCrispinessLevel(
284 PVOID Context,
285 UCHAR Level
286 );
287 BOOLEAN
288 Bus_IsSafetyLockEnabled(
289 PVOID Context
290 );
291 VOID
292 Bus_InterfaceReference (
293 PVOID Context
294 );
295 VOID
296 Bus_InterfaceDereference (
297 PVOID Context
298 );
299
300 /* EOF */