e8f4f85179a0d80c296860d87ceb0cf7d628afb6
[reactos.git] / drivers / bus / acpi / ospm / 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 #define ACPI_DEBUG
7 #include <acpi.h>
8 #define __INCLUDE_TYPES_H
9 #include <platform/types.h>
10 #undef ROUND_UP
11 #include <ddk/ntddk.h>
12 #include <bm.h>
13
14 typedef ACPI_STATUS (*ACPI_DRIVER_FUNCTION)(VOID);
15
16
17 typedef enum {
18   dsStopped,
19   dsStarted,
20   dsPaused,
21   dsRemoved,
22   dsSurpriseRemoved
23 } ACPI_DEVICE_STATE;
24
25
26 typedef struct _COMMON_DEVICE_EXTENSION
27 {
28   // Pointer to device object, this device extension is associated with
29   PDEVICE_OBJECT DeviceObject;
30   // Wether this device extension is for an FDO or PDO
31   BOOLEAN IsFDO;
32   // Wether the device is removed
33   BOOLEAN Removed;
34   // Current device power state for the device
35   DEVICE_POWER_STATE DevicePowerState;
36   // Lower device object
37   PDEVICE_OBJECT Ldo;
38 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
39
40 /* Physical Device Object device extension for a child device */
41 typedef struct _PDO_DEVICE_EXTENSION
42 {
43   // Common device data
44   COMMON_DEVICE_EXTENSION Common;
45   // Hardware IDs
46   UNICODE_STRING HardwareIDs;
47   // Compatible IDs
48   UNICODE_STRING CompatibleIDs;
49 } PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
50
51 typedef struct _FDO_DEVICE_EXTENSION
52 {
53   // Common device data
54   COMMON_DEVICE_EXTENSION Common;
55   // Physical Device Object
56   PDEVICE_OBJECT Pdo;
57   // Current state of the driver
58   ACPI_DEVICE_STATE State;
59   // Supported system states
60   BOOLEAN SystemStates[ACPI_S_STATE_COUNT];
61   // Namespace device list
62   LIST_ENTRY DeviceListHead;
63   // Number of devices in device list
64   ULONG DeviceListCount;
65   // Lock for namespace device list
66   KSPIN_LOCK DeviceListLock;
67 } FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
68
69
70 typedef struct _ACPI_DEVICE
71 {
72   // Entry on device list
73   LIST_ENTRY DeviceListEntry;
74   // Bus manager handle
75   BM_HANDLE BmHandle;
76   // Physical Device Object
77   PDEVICE_OBJECT Pdo;
78   // Initialization function
79   ACPI_DRIVER_FUNCTION Initialize;
80   // Cleanup function
81   ACPI_DRIVER_FUNCTION Terminate;
82 } ACPI_DEVICE, *PACPI_DEVICE;
83
84
85 /* acpienum.c */
86
87 NTSTATUS
88 ACPIEnumerateRootBusses(
89   PFDO_DEVICE_EXTENSION DeviceExtension);
90
91 NTSTATUS
92 ACPIEnumerateNamespace(
93   PFDO_DEVICE_EXTENSION DeviceExtension);
94
95
96 /* fdo.c */
97
98 NTSTATUS
99 STDCALL
100 FdoPnpControl(
101   PDEVICE_OBJECT DeviceObject,
102   PIRP Irp);
103
104 NTSTATUS
105 STDCALL
106 FdoPowerControl(
107   PDEVICE_OBJECT DeviceObject,
108   PIRP Irp);
109
110 /* pdo.c */
111
112 NTSTATUS
113 STDCALL
114 PdoPnpControl(
115   PDEVICE_OBJECT DeviceObject,
116   PIRP Irp);
117
118 NTSTATUS
119 STDCALL
120 PdoPowerControl(
121   PDEVICE_OBJECT DeviceObject,
122   PIRP Irp);
123
124 /* EOF */