mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-30 02:33:44 +01:00 
			
		
		
		
	https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** 
 | |
|   Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
 | |
|   This program and the accompanying materials
 | |
|   are licensed and made available under the terms and conditions of the BSD License
 | |
|   which accompanies this distribution.  The full text of the license may be found at
 | |
|   http://opensource.org/licenses/bsd-license.php
 | |
| 
 | |
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| **/
 | |
| /*++
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|   PpmPlatformPolicy.h
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
|   Interface definition details between PPM and platform drivers during DXE phase.
 | |
| 
 | |
| --*/
 | |
| #ifndef _PPM_PLATFORM_POLICY_H_
 | |
| #define _PPM_PLATFORM_POLICY_H_
 | |
| 
 | |
| //
 | |
| //  PPM policy provided by platform for DXE phase {DDABFEAC-EF63-452c-8F39-ED7FAED8265E}
 | |
| //
 | |
| #define PPM_PLATFORM_POLICY_PROTOCOL_GUID \
 | |
|   {0xddabfeac, 0xef63, 0x452c, 0x8f, 0x39, 0xed, 0x7f, 0xae, 0xd8, 0x26, 0x5e}
 | |
| 
 | |
| //
 | |
| // Extern the GUID for protocol users.
 | |
| //
 | |
| extern EFI_GUID gPpmPlatformPolicyProtocolGuid;
 | |
| 
 | |
| //
 | |
| // Forward reference for ANSI C compatibility
 | |
| //
 | |
| typedef struct _PPM_PLATFORM_POLICY_PROTOCOL PPM_PLATFORM_POLICY_PROTOCOL;
 | |
| 
 | |
| //
 | |
| // Protocol revision number
 | |
| // Any backwards compatible changes to this protocol will result in an update in the revision number
 | |
| // Major changes will require publication of a new protocol
 | |
| //
 | |
| // Revision 1: Original version
 | |
| // Revision 2: Added T-states field to the PPM_FUNCTION_ENABLES structure, Renamed unused fields - CxPopUpEnable, CxPopDownEnable, FastC4ExitEnable
 | |
| // Revision 3: Extended VidCpuid to 32 bits for extended CPUID support (Penryn)
 | |
| // Revision 4: Added support for extended C6 residency enabling
 | |
| //
 | |
| #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION     1
 | |
| #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_2   2
 | |
| #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_3   3
 | |
| #define PPM_PLATFORM_POLICY_PROTOCOL_REVISION_4   4
 | |
| 
 | |
| //
 | |
| // Define maximum number of custom VID states supported
 | |
| //
 | |
| #ifndef MAX_CUSTOM_VID_TABLE_STATES
 | |
| #define MAX_CUSTOM_VID_TABLE_STATES               6
 | |
| #endif
 | |
| //
 | |
| // Custom VID table
 | |
| //
 | |
| typedef struct {
 | |
|   UINT8   VidNumber;
 | |
|   UINT32  VidCpuid;
 | |
|   UINT16  VidMaxRatio;
 | |
|   UINT16  VidMaxVid;
 | |
|   UINT16  StateRatio[MAX_CUSTOM_VID_TABLE_STATES];
 | |
|   UINT16  StateVid[MAX_CUSTOM_VID_TABLE_STATES];
 | |
| } PPM_CUSTOM_VID_TABLE;
 | |
| 
 | |
| //
 | |
| // PPM functional enables
 | |
| //
 | |
| typedef struct {
 | |
|   UINT8   EnableGv                   :1; // 0: Disabled; 1: Enabled
 | |
|   UINT8   EnableCx                   :1;
 | |
|   UINT8   EnableCxe                  :1;
 | |
|   UINT8   EnableC4                   :1;
 | |
|   UINT8   EnableC6                   :1;
 | |
|   UINT8   EnableC7                   :1;
 | |
|   UINT8   EnableTm                   :1;
 | |
|   UINT8   Reserve00                  :1;
 | |
|   UINT8   Reserve01                  :1;
 | |
|   UINT8   EnableTurboMode            :1;
 | |
|   UINT8   PowerLimit2                :1;
 | |
|   UINT8   EnableProcHot              :1;
 | |
|   UINT8   Reserve02                  :1;
 | |
|   UINT8   EnableCMP                  :1;
 | |
|   UINT8   TStatesEnable              :1;
 | |
|   UINT8   Reserve03                  :1;
 | |
|   UINT8   Reserve04                  ;
 | |
| 
 | |
| } PPM_FUNCTION_ENABLES;
 | |
| 
 | |
| 
 | |
| //
 | |
| // PPM Turbo settings
 | |
| //
 | |
| typedef struct _PPM_TURBO_SETTINGS {
 | |
|   UINT16  PowerLimit1;
 | |
|   UINT32  PowerLimit1Time;
 | |
|   UINT16  PowerLimit2;
 | |
|   UINT8   TurboPowerLimitLock;
 | |
| } PPM_TURBO_SETTINGS;
 | |
| 
 | |
| //
 | |
| // Platform Policy
 | |
| //
 | |
| typedef struct _PPM_PLATFORM_POLICY_PROTOCOL {
 | |
|   UINT8                                 Revision;
 | |
|   PPM_FUNCTION_ENABLES                  FunctionEnables;
 | |
|   PPM_CUSTOM_VID_TABLE                  CustomVidTable;
 | |
|   PPM_TURBO_SETTINGS                    TurboSettings;
 | |
| 
 | |
|   UINT8                                 Reserve00;
 | |
|   UINT8                                 Reserve01;
 | |
|   UINT8                                 Reserve02;
 | |
|   UINT8                                 Reserve03;
 | |
|   UINT8                                 Reserve04;
 | |
|   UINT8                                 Reserve05;
 | |
|   UINT8                                 Reserve06;
 | |
| 
 | |
|   UINT8                                 S3RestoreMsrSwSmiNumber;
 | |
|   UINT8                                 Reserve07;
 | |
|   UINT32                                Reserve08;
 | |
|   UINT8                                 Reserve09;
 | |
|   //
 | |
|   // Primary and Secondary Plane Current Limits
 | |
|   //
 | |
|   UINT16                                Reserve10;
 | |
|   UINT8                                 Reserve11;
 | |
| } PPM_PLATFORM_POLICY_PROTOCOL;
 | |
| 
 | |
| #endif
 |