2 Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
3 This program and the accompanying materials
4 are licensed and made available under the terms and conditions of the BSD License
5 which accompanies this distribution. The full text of the license may be found at
6 http://opensource.org/licenses/bsd-license.php
8 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
9 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20 Interface definition details between PPM and platform drivers during DXE phase.
23 #ifndef _PPM_PLATFORM_POLICY_H_
24 #define _PPM_PLATFORM_POLICY_H_
27 // PPM policy provided by platform for DXE phase {DDABFEAC-EF63-452c-8F39-ED7FAED8265E}
29 #define PPM_PLATFORM_POLICY_PROTOCOL_GUID \
30 {0xddabfeac, 0xef63, 0x452c, 0x8f, 0x39, 0xed, 0x7f, 0xae, 0xd8, 0x26, 0x5e}
33 // Extern the GUID for protocol users.
35 extern EFI_GUID gPpmPlatformPolicyProtocolGuid
;
38 // Forward reference for ANSI C compatibility
40 typedef struct _PPM_PLATFORM_POLICY_PROTOCOL PPM_PLATFORM_POLICY_PROTOCOL
;
43 // Protocol revision number
44 // Any backwards compatible changes to this protocol will result in an update in the revision number
45 // Major changes will require publication of a new protocol
47 // Revision 1: Original version
48 // Revision 2: Added T-states field to the PPM_FUNCTION_ENABLES structure, Renamed unused fields - CxPopUpEnable, CxPopDownEnable, FastC4ExitEnable
49 // Revision 3: Extended VidCpuid to 32 bits for extended CPUID support (Penryn)
50 // Revision 4: Added support for extended C6 residency enabling
52 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION 1
53 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_2 2
54 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_3 3
55 #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_4 4
58 // Define maximum number of custom VID states supported
60 #ifndef MAX_CUSTOM_VID_TABLE_STATES
61 #define MAX_CUSTOM_VID_TABLE_STATES 6
71 UINT16 StateRatio
[MAX_CUSTOM_VID_TABLE_STATES
];
72 UINT16 StateVid
[MAX_CUSTOM_VID_TABLE_STATES
];
73 } PPM_CUSTOM_VID_TABLE
;
76 // PPM functional enables
79 UINT8 EnableGv
:1; // 0: Disabled; 1: Enabled
88 UINT8 EnableTurboMode
:1;
90 UINT8 EnableProcHot
:1;
93 UINT8 TStatesEnable
:1;
97 } PPM_FUNCTION_ENABLES
;
101 // PPM Turbo settings
103 typedef struct _PPM_TURBO_SETTINGS
{
105 UINT32 PowerLimit1Time
;
107 UINT8 TurboPowerLimitLock
;
108 } PPM_TURBO_SETTINGS
;
113 typedef struct _PPM_PLATFORM_POLICY_PROTOCOL
{
115 PPM_FUNCTION_ENABLES FunctionEnables
;
116 PPM_CUSTOM_VID_TABLE CustomVidTable
;
117 PPM_TURBO_SETTINGS TurboSettings
;
127 UINT8 S3RestoreMsrSwSmiNumber
;
132 // Primary and Secondary Plane Current Limits
136 } PPM_PLATFORM_POLICY_PROTOCOL
;