windows-nt/Source/XPSP1/NT/drivers/storage/ide/atapi/acpiutil.h

139 lines
3.3 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//+-------------------------------------------------------------------------
//
// 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___