/** @file
Policy definition for System Agent overclocking Config Block
Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _OVERCLOCKING_PREMEM_CONFIG__H_
#define _OVERCLOCKING_PREMEM_CONFIG__H_
#pragma pack(push, 1)
#define SA_OVERCLOCKING_CONFIG_REVISION 2
/**
Defines the overclocking configuration parameters for System Agent.\n
Revision 1:
- Initial version.
Revision 2:
- Add GT unslice support.
**/
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Offset 0-27 Config Block Header
/**
Offset 28:0 :
Enable disable of SA overclocking mailbox commands.
If disabled, or if PcdSaOcEnable is disabled, all other policies in this config block are ignored.
0=Disable,
1=Enable
**/
UINT32 OcSupport : 1;
UINT32 GtVoltageMode : 1; ///< Offset 28:1 :Specifies whether GT voltage is operating in Adaptive or Override mode: 0=Adaptive, 1=Override
UINT32 RealtimeMemoryTiming : 1; ///< Offset 28:2 :Enable/Disable the message sent to the CPU to allow realtime memory timing changes after MRC_DONE. 0=Disable, 1=Enable
UINT32 GtusVoltageMode : 1; ///< Offset 28:3 :Specifies whether GT unslice voltage is operating in Adaptive or Override mode: 0=Adaptive, 1=Override
UINT32 RsvdBits0 : 28; ///< Offset 28:4 - 31 :Reserved for future use
UINT8 GtMaxOcRatio; ///< Offset 32 Maximum GT turbo ratio override: 0=Minimal, 255=Maximum, 0=AUTO
UINT8 Rsvd0; ///< Offset 33 Reserved for DWORD alignment
INT16 GtVoltageOffset; ///< Offset 34 The voltage offset applied to GT slice. Valid range from -1000mv to 1000mv: 0=Minimal, 1000=Maximum
UINT16 GtVoltageOverride; ///< Offset 36 The GT voltage override which is applied to the entire range of GT frequencies 0=Default
UINT16 GtExtraTurboVoltage; ///< Offset 38 The adaptive voltage applied during turbo frequencies. Valid range from 0 to 2000mV: 0=Minimal, 2000=Maximum
INT16 SaVoltageOffset; ///< Offset 40 The voltage offset applied to the SA. Valid range from -1000mv to 1000mv: 0=Default
INT16 GtusVoltageOffset; ///< Offset 42 The voltage offset applied to GT unslice. Valid range from -1000mv to 1000mv: 0=Minimal, 1000=Maximum
UINT16 GtusVoltageOverride; ///< Offset 44 The GT unslice voltage override which is applied to the entire range of GT frequencies: 0=Default
UINT16 GtusExtraTurboVoltage; ///< Offset 46 The adaptive voltage applied during turbo frequencies. Valid range from 0 to 2000mV: 0=Default
UINT8 GtusMaxOcRatio; ///< Offset 48 Maximum GTus turbo ratio override: 0=Minimal, 6=Maximum, 0=AUTO
UINT8 Rsvd1[3]; ///< Offset 49-51 Reserved for DWORD alignment
} OVERCLOCKING_PREMEM_CONFIG;
#pragma pack(pop)
#endif // _OVERCLOCKING_CONFIG_H_