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