151 lines
2.8 KiB
C
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
|