- Update to new ACPI driver by Samuel Serapion (and fixes by me)
[reactos.git] / reactos / drivers / bus / acpi / include / acpisys.h
diff --git a/reactos/drivers/bus/acpi/include/acpisys.h b/reactos/drivers/bus/acpi/include/acpisys.h
new file mode 100644 (file)
index 0000000..4779d22
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * PROJECT: ReactOS ACPI bus driver
+ * FILE:    acpi/ospm/include/acpisys.h
+ * PURPOSE: ACPI bus driver definitions
+ */
+typedef enum _DEVICE_PNP_STATE {
+
+    NotStarted = 0,         // Not started yet
+    Started,                // Device has received the START_DEVICE IRP
+    StopPending,            // Device has received the QUERY_STOP IRP
+    Stopped,                // Device has received the STOP_DEVICE IRP
+    UnKnown                 // Unknown state
+
+} DEVICE_PNP_STATE;
+
+//
+// A common header for the device extensions of the PDOs and FDO
+//
+
+typedef struct _COMMON_DEVICE_DATA
+{
+    PDEVICE_OBJECT  Self;
+    BOOLEAN         IsFDO;
+    DEVICE_PNP_STATE DevicePnPState;
+    DEVICE_PNP_STATE PreviousPnPState;
+    SYSTEM_POWER_STATE  SystemPowerState;
+    DEVICE_POWER_STATE  DevicePowerState;
+} COMMON_DEVICE_DATA, *PCOMMON_DEVICE_DATA;
+
+typedef struct _PDO_DEVICE_DATA
+{
+    COMMON_DEVICE_DATA Common;
+    ACPI_HANDLE AcpiHandle;
+    // A back pointer to the bus
+    PDEVICE_OBJECT  ParentFdo;
+    // An array of (zero terminated wide character strings).
+    // The array itself also null terminated
+    PWCHAR      HardwareIDs;
+    // Link point to hold all the PDOs for a single bus together
+    LIST_ENTRY  Link;
+    ULONG       InterfaceRefCount;
+
+} PDO_DEVICE_DATA, *PPDO_DEVICE_DATA;
+
+//
+// The device extension of the bus itself.  From whence the PDO's are born.
+//
+
+typedef struct _FDO_DEVICE_DATA
+{
+    COMMON_DEVICE_DATA Common;
+    PDEVICE_OBJECT  UnderlyingPDO;
+
+    // The underlying bus PDO and the actual device object to which our
+    // FDO is attached
+    PDEVICE_OBJECT  NextLowerDriver;
+
+    // List of PDOs created so far
+    LIST_ENTRY      ListOfPDOs;
+
+    // The PDOs currently enumerated.
+    ULONG           NumPDOs;
+
+    // A synchronization for access to the device extension.
+    FAST_MUTEX      Mutex;
+
+    // The name returned from IoRegisterDeviceInterface,
+    // which is used as a handle for IoSetDeviceInterfaceState.
+    UNICODE_STRING      InterfaceName;
+
+} FDO_DEVICE_DATA, *PFDO_DEVICE_DATA;
+
+#define FDO_FROM_PDO(pdoData) \
+          ((PFDO_DEVICE_DATA) (pdoData)->ParentFdo->DeviceExtension)
+
+#define INITIALIZE_PNP_STATE(_Data_)    \
+        (_Data_).DevicePnPState =  NotStarted;\
+        (_Data_).PreviousPnPState = NotStarted;
+
+#define SET_NEW_PNP_STATE(_Data_, _state_) \
+        (_Data_).PreviousPnPState =  (_Data_).DevicePnPState;\
+        (_Data_).DevicePnPState = (_state_);
+
+#define RESTORE_PREVIOUS_PNP_STATE(_Data_)   \
+        (_Data_).DevicePnPState =   (_Data_).PreviousPnPState;\
+
+/* acpienum.c */
+
+//NTSTATUS
+//ACPIEnumerateDevices(
+//  PFDO_DEVICE_EXTENSION DeviceExtension);
+
+NTSTATUS
+NTAPI
+Bus_CreateClose (
+    PDEVICE_OBJECT  DeviceObject,
+    PIRP            Irp
+    );
+
+VOID
+Bus_DriverUnload (
+    PDRIVER_OBJECT DriverObject
+    );
+
+PCHAR
+PnPMinorFunctionString (
+    UCHAR MinorFunction
+);
+
+NTSTATUS
+NTAPI
+Bus_AddDevice(
+    PDRIVER_OBJECT DriverObject,
+    PDEVICE_OBJECT PhysicalDeviceObject
+    );
+
+NTSTATUS
+Bus_SendIrpSynchronously (
+    PDEVICE_OBJECT DeviceObject,
+    PIRP Irp
+    );
+
+NTSTATUS
+NTAPI
+Bus_PnP (
+    PDEVICE_OBJECT   DeviceObject,
+    PIRP             Irp
+    );
+
+NTSTATUS
+Bus_CompletionRoutine(
+     PDEVICE_OBJECT   DeviceObject,
+     PIRP             Irp,
+     PVOID            Context
+    );
+
+VOID
+Bus_InitializePdo (
+    PDEVICE_OBJECT      Pdo,
+    PFDO_DEVICE_DATA    FdoData
+    );
+
+
+void
+Bus_RemoveFdo (
+     PFDO_DEVICE_DATA    FdoData
+    );
+
+NTSTATUS
+Bus_DestroyPdo (
+    PDEVICE_OBJECT      Device,
+    PPDO_DEVICE_DATA    PdoData
+    );
+
+
+NTSTATUS
+Bus_FDO_PnP (
+     PDEVICE_OBJECT       DeviceObject,
+     PIRP                 Irp,
+     PIO_STACK_LOCATION   IrpStack,
+     PFDO_DEVICE_DATA     DeviceData
+    );
+
+
+NTSTATUS
+Bus_StartFdo (
+      PFDO_DEVICE_DATA            FdoData,
+      PIRP   Irp );
+
+PCHAR
+DbgDeviceIDString(
+    BUS_QUERY_ID_TYPE Type
+    );
+
+PCHAR
+DbgDeviceRelationString(
+     DEVICE_RELATION_TYPE Type
+    );
+
+NTSTATUS
+Bus_FDO_Power (
+    PFDO_DEVICE_DATA    FdoData,
+    PIRP                Irp
+    );
+
+NTSTATUS
+Bus_PDO_Power (
+    PPDO_DEVICE_DATA    PdoData,
+    PIRP                Irp
+    );
+
+NTSTATUS
+NTAPI
+Bus_Power (
+     PDEVICE_OBJECT DeviceObject,
+     PIRP Irp
+    );
+
+PCHAR
+PowerMinorFunctionString (
+    UCHAR MinorFunction
+);
+
+PCHAR
+DbgSystemPowerString(
+     SYSTEM_POWER_STATE Type
+    );
+
+PCHAR
+DbgDevicePowerString(
+     DEVICE_POWER_STATE Type
+    );
+
+NTSTATUS
+Bus_PDO_PnP (
+     PDEVICE_OBJECT       DeviceObject,
+     PIRP                 Irp,
+     PIO_STACK_LOCATION   IrpStack,
+     PPDO_DEVICE_DATA     DeviceData
+    );
+
+NTSTATUS
+Bus_PDO_QueryDeviceCaps(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_PDO_QueryDeviceId(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+
+NTSTATUS
+Bus_PDO_QueryDeviceText(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_PDO_QueryResources(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_PDO_QueryResourceRequirements(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_PDO_QueryDeviceRelations(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_PDO_QueryBusInformation(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+NTSTATUS
+Bus_GetDeviceCapabilities(
+      PDEVICE_OBJECT          DeviceObject,
+      PDEVICE_CAPABILITIES    DeviceCapabilities
+    );
+
+NTSTATUS
+Bus_PDO_QueryInterface(
+     PPDO_DEVICE_DATA     DeviceData,
+      PIRP   Irp );
+
+BOOLEAN
+Bus_GetCrispinessLevel(
+       PVOID Context,
+      PUCHAR Level
+    );
+BOOLEAN
+Bus_SetCrispinessLevel(
+       PVOID Context,
+      UCHAR Level
+    );
+BOOLEAN
+Bus_IsSafetyLockEnabled(
+     PVOID Context
+    );
+VOID
+Bus_InterfaceReference (
+    PVOID Context
+   );
+VOID
+Bus_InterfaceDereference (
+    PVOID Context
+   );
+
+/* EOF */