139 lines
3.3 KiB
C
139 lines
3.3 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1998
|
|
//
|
|
// File: acpiutil.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#if !defined (___acpiutil_h___)
|
|
#define ___acpiutil_h___
|
|
|
|
//
|
|
// ACPI Control Method Stuff
|
|
//
|
|
#define ACPI_METHOD_GET_TASK_FILE ((ULONG) 'FTG_') // _GTF
|
|
#define ACPI_METHOD_GET_TIMING ((ULONG) 'MTG_') // _GTM
|
|
#define ACPI_METHOD_SET_TIMING ((ULONG) 'MTS_') // _STM
|
|
|
|
#define ACPI_XFER_MODE_NOT_SUPPORT (0xffffffff)
|
|
|
|
#pragma pack(1)
|
|
typedef struct _ACPI_GTF_IDE_REGISTERS {
|
|
UCHAR FeaturesReg;
|
|
UCHAR SectorCountReg;
|
|
UCHAR SectorNumberReg;
|
|
UCHAR CylLowReg;
|
|
UCHAR CylHighReg;
|
|
UCHAR DriveHeadReg;
|
|
UCHAR CommandReg;
|
|
} ACPI_GTF_IDE_REGISTERS, *PACPI_GTF_IDE_REGISTERS;
|
|
#pragma pack()
|
|
|
|
typedef struct _ACPI_IDE_TIMING {
|
|
|
|
struct _TIMING {
|
|
|
|
ULONG Pio;
|
|
ULONG Dma;
|
|
|
|
} Speed[MAX_IDE_DEVICE];
|
|
|
|
union {
|
|
struct {
|
|
ULONG UltraDma0:1;
|
|
ULONG IoChannelReady0:1;
|
|
ULONG UltraDma1:1;
|
|
ULONG IoChannelReady1:1;
|
|
ULONG IndependentTiming:1;
|
|
ULONG Reserved:27;
|
|
} b;
|
|
ULONG AsULong;
|
|
} Flags;
|
|
} ACPI_IDE_TIMING, *PACPI_IDE_TIMING;
|
|
|
|
|
|
NTSTATUS
|
|
DeviceQueryFirmwareBootSettings (
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN OUT PDEVICE_SETTINGS *IdeBiosSettings
|
|
);
|
|
|
|
NTSTATUS
|
|
DeviceQueryACPISettings (
|
|
IN PDEVICE_EXTENSION_HEADER DoExtension,
|
|
IN ULONG ControlMethodName,
|
|
OUT PACPI_EVAL_OUTPUT_BUFFER *QueryResult
|
|
);
|
|
|
|
NTSTATUS
|
|
DeviceQueryACPISettingsCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
DeviceQueryChannelTimingSettings (
|
|
IN PFDO_EXTENSION FdoExtension,
|
|
IN OUT PACPI_IDE_TIMING TimimgSettings
|
|
);
|
|
|
|
typedef struct _SYNC_SET_ACPI_TIMING_CONTEXT {
|
|
|
|
KEVENT Event;
|
|
NTSTATUS IrpStatus;
|
|
|
|
} SYNC_SET_ACPI_TIMING_CONTEXT, *PSYNC_SET_ACPI_TIMING_CONTEXT;
|
|
|
|
NTSTATUS
|
|
ChannelSyncSetACPITimingSettings (
|
|
IN PFDO_EXTENSION FdoExtension,
|
|
IN PACPI_IDE_TIMING TimimgSettings,
|
|
IN PIDENTIFY_DATA AtaIdentifyData[MAX_IDE_DEVICE]
|
|
);
|
|
|
|
NTSTATUS
|
|
ChannelSyncSetACPITimingSettingsCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN NTSTATUS Status,
|
|
IN PVOID Context
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(*PSET_ACPI_TIMING_COMPLETION_ROUTINE) (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN NTSTATUS Status,
|
|
IN PVOID Context
|
|
);
|
|
|
|
typedef struct _ASYNC_SET_ACPI_TIMING_CONTEXT {
|
|
|
|
PFDO_EXTENSION FdoExtension;
|
|
|
|
PSET_ACPI_TIMING_COMPLETION_ROUTINE CallerCompletionRoutine;
|
|
PVOID CallerContext;
|
|
|
|
} ASYNC_SET_ACPI_TIMING_CONTEXT, *PASYNC_SET_ACPI_TIMING_CONTEXT;
|
|
|
|
NTSTATUS
|
|
ChannelSetACPITimingSettings (
|
|
IN PFDO_EXTENSION FdoExtension,
|
|
IN PACPI_IDE_TIMING TimimgSettings,
|
|
IN PIDENTIFY_DATA AtaIdentifyData[MAX_IDE_DEVICE],
|
|
IN PSET_ACPI_TIMING_COMPLETION_ROUTINE CallerCompletionRoutine,
|
|
IN PVOID CallerContext
|
|
);
|
|
|
|
NTSTATUS
|
|
ChannelSetACPITimingSettingsCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
#endif // ___acpiutil_h___
|