Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation Module Name: legacy.h Author: Todd Carpenter (4/16/01) - create file Environment: Kernel mode Notes: Revision History:
--*/ #ifndef _AMDK7_LEGACY_H
#define _AMDK7_LEGACY_H
#include <pshpack1.h>
#define PST_BLOCK_SIGNATURE 0x4b444d41 // "AMDK"
#define PST_BLOCK_SIGNATURE_STRING "AMDK7PNOW!" // 41 4d 44 4b 37 50 4e 4f 57 21
#define PST_BLOCK_SIGNATURE_STRING_LEN 10
#define PST_SEARCH_RANGE_BEGIN 0xC0000
#define PST_SEARCH_RANGE_END 0xFFFF0
#define PST_SEARCH_RANGE_LENGTH (PST_SEARCH_RANGE_END-PST_SEARCH_RANGE_BEGIN+1)
#define PST_SEARCH_INTERVAL 16 // search on 16 byte boundaries
#pragma pack (push, 1)
typedef struct _PST_SIGNATURE {
ULONG CpuId; UCHAR FSBSpeed; UCHAR MaxFid; UCHAR StartVid;
} PST_SIGNATURE, *PPST_SIGNATURE;
typedef struct _PST_DATA {
UCHAR Fid; UCHAR Vid;
} PST_DATA, *PPST_DATA;
typedef struct _PST_ENTRY {
ULONG CpuId; UCHAR FSBSpeed; UCHAR MaxFid; UCHAR StartVid; UCHAR NumPStates; // total number of vid-fid pairs (must be >= 1)
PST_DATA States[1];
} PST_ENTRY, *PPST_ENTRY, **PPPST_ENTRY;
typedef struct _PST_BLOCK_HEADER {
UCHAR Signature[10]; // "AMDK7PNOW!"
UCHAR TableVersion; UCHAR Flags; USHORT SettlingTime; UCHAR Reserved1; UCHAR NumPST; PST_ENTRY PstState;
} PST_BLOCK_HEADER, *PPST_BLOCK_HEADER, **PPPST_BLOCK_HEADER; #pragma pack (pop)
//
// Functions
//
NTSTATUS FindPSTBlock ( OUT PPPST_BLOCK_HEADER PstBlock );
NTSTATUS FindMatchingPSTEntry( IN PPST_BLOCK_HEADER PstBlock, IN PPST_SIGNATURE Signature, OUT PPPST_ENTRY PstStates );
NTSTATUS CreateSystemSignature( PPST_SIGNATURE Signature );
UCHAR GetFSBSpeed( VOID );
NTSTATUS ConvertPstToPss ( IN PFDO_DATA DevExt, IN PPST_ENTRY PstEntry, OUT PACPI_PSS_PACKAGE *PssPackage );
ULONG GetPSTSize( IN PPST_BLOCK_HEADER PstBlock );
#if DBG
VOID DumpPSTBlock( PPST_BLOCK_HEADER PstBlock );
VOID DumpPSTEntry( PPST_ENTRY PstEntry );
VOID DumpPSTSignature( PPST_SIGNATURE PstSig ); #else
#define DumpPSTBlock(_x_)
#define DumpPSTEntry(_x_)
#define DumpPSTSignature(_x_)
#endif
#endif
|