2 Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
3 SPDX-License-Identifier: BSD-2-Clause-Patent
14 Interface definition details between PPM and platform drivers during DXE phase.
17 #ifndef _PPM_PLATFORM_POLICY_H_
18 #define _PPM_PLATFORM_POLICY_H_
21 // PPM policy provided by platform for DXE phase {DDABFEAC-EF63-452c-8F39-ED7FAED8265E}
23 #define PPM_PLATFORM_POLICY_PROTOCOL_GUID \
24 {0xddabfeac, 0xef63, 0x452c, 0x8f, 0x39, 0xed, 0x7f, 0xae, 0xd8, 0x26, 0x5e}
27 // Extern the GUID for protocol users.
29 extern EFI_GUID gPpmPlatformPolicyProtocolGuid
;
32 // Forward reference for ANSI C compatibility
34 typedef struct _PPM_PLATFORM_POLICY_PROTOCOL PPM_PLATFORM_POLICY_PROTOCOL
;
37 // Protocol revision number
38 // Any backwards compatible changes to this protocol will result in an update in the revision number
39 // Major changes will require publication of a new protocol
41 // Revision 1: Original version
42 // Revision 2: Added T-states field to the PPM_FUNCTION_ENABLES structure, Renamed unused fields - CxPopUpEnable, CxPopDownEnable, FastC4ExitEnable
43 // Revision 3: Extended VidCpuid to 32 bits for extended CPUID support (Penryn)
44 // Revision 4: Added support for extended C6 residency enabling
46 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION 1
47 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_2 2
48 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_3 3
49 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_4 4
52 // Define maximum number of custom VID states supported
54 #ifndef MAX_CUSTOM_VID_TABLE_STATES
55 #define MAX_CUSTOM_VID_TABLE_STATES 6
65 UINT16 StateRatio
[MAX_CUSTOM_VID_TABLE_STATES
];
66 UINT16 StateVid
[MAX_CUSTOM_VID_TABLE_STATES
];
67 } PPM_CUSTOM_VID_TABLE
;
70 // PPM functional enables
73 UINT8 EnableGv
:1; // 0: Disabled; 1: Enabled
82 UINT8 EnableTurboMode
:1;
84 UINT8 EnableProcHot
:1;
87 UINT8 TStatesEnable
:1;
91 } PPM_FUNCTION_ENABLES
;
97 typedef struct _PPM_TURBO_SETTINGS
{
99 UINT32 PowerLimit1Time
;
101 UINT8 TurboPowerLimitLock
;
102 } PPM_TURBO_SETTINGS
;
107 struct _PPM_PLATFORM_POLICY_PROTOCOL
{
109 PPM_FUNCTION_ENABLES FunctionEnables
;
110 PPM_CUSTOM_VID_TABLE CustomVidTable
;
111 PPM_TURBO_SETTINGS TurboSettings
;
121 UINT8 S3RestoreMsrSwSmiNumber
;
126 // Primary and Secondary Plane Current Limits