windows-nt/Source/XPSP1/NT/base/hals/processor/amdk7/amdk7.h
2020-09-26 16:20:57 +08:00

151 lines
2.8 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
amdk7.h
Author:
Todd Carpenter (1/30/01) - create file
Environment:
Kernel mode
Notes:
Revision History:
--*/
#ifndef _AMDK7_H
#define _AMDK7_H
#define AMDK7_PARAMETERS_KEY L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\AmdK7\\Parameters"
#define ENABLE_LEGACY_INTERFACE 0x1
#define AMDK7_FID_VID_CONTROL_MSR 0xC0010041
#define AMDK7_FID_VID_STATUS_MSR 0xC0010042
#define AmdK7FidVidTransition(_x_) \
WriteMSR(AMDK7_FID_VID_CONTROL_MSR, _x_);
typedef struct {
union {
struct {
ULONG Fid:5; // 4:0
ULONG Reserved1:3; // 7:5
ULONG Vid:5; // 12:8
ULONG Reserved2:3; // 15:13
ULONG FidControl:1; // 16
ULONG VidControl:1; // 17
ULONG Reserved3:2; // 19:18
ULONG FidChngRatio:1; // 20
ULONG Reserved4:11; // 31:21
ULONG SGTC:20; // 51:32
ULONG Reserved5:12; // 63:52
};
ULONG64 AsQWord;
};
} FID_VID_CONTROL, *PFID_VID_CONTROL;
typedef struct {
union {
struct {
ULONG CFid:5; // 4:0 - Current FID
ULONG Reserved1:3; // 7:5
ULONG SFid:5; // 12:8 - Startup FID
ULONG Reserved2:3; // 15:13
ULONG MFid:5; // 20:16 - Maximum FID
ULONG Reserved3:11;// 31:21
ULONG CVid:5; // 36:32 - Current VID
ULONG Reserved4:3; // 39:37
ULONG SVid:5; // 44:40 - Startup VID
ULONG Reserved5:3; // 47:45
ULONG MVid:5; // 52:48 - Maximum VID
ULONG Reserved6:11;// 63:53
};
ULONG64 AsQWord;
};
} FID_VID_STATUS, *PFID_VID_STATUS;
typedef struct {
union {
struct {
ULONG Fid:5; // 4:0
ULONG Vid:5; // 9:5
ULONG SGTC:20; // 29:10
ULONG Reserved:2; // 31:30
};
ULONG AsDWord;
};
} PSS_CONTROL, *PPSS_CONTROL;
typedef struct {
union {
struct {
ULONG Fid:5; // 4:0 - Current FID
ULONG Vid:5; // 9:5 - Current VID
ULONG Reserved:22; // 31:10
};
ULONG AsDWord;
};
} PSS_STATUS, *PPSS_STATUS;
ULONG64
ConvertPssControlToFidVidControl(
ULONG PssControlValue,
BOOLEAN Fid
);
ULONG
ConvertFidVidStatusToPssStatus(
ULONG64 FidVidStatus
);
NTSTATUS
FindCurrentPssPerfState(
PACPI_PSS_PACKAGE PssPackage,
PULONG PssState
);
//
// Debug Routines
//
#if DBG
VOID
DumpFidVidStatus(
IN ULONG64 FidVidStatus
);
VOID
DumpFidVidControl(
IN ULONG64 FidVidControl
);
VOID
DumpPssStatus(
IN ULONG PssStatus
);
VOID
DumpPssControl(
IN ULONG PssControl
);
#else
#define DumpFidVidStatus(_x_)
#define DumpFidVidControl(_x_)
#define DumpPssStatus(_x_)
#define DumpPssControl(_x_)
#endif
#endif _AMDK7_H