summaryrefslogtreecommitdiff
path: root/Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h
diff options
context:
space:
mode:
Diffstat (limited to 'Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h')
-rw-r--r--Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h278
1 files changed, 278 insertions, 0 deletions
diff --git a/Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h b/Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h
new file mode 100644
index 0000000..8dc0baa
--- /dev/null
+++ b/Board/EM/MeWrapper/Icc/Protocol/IccOverClocking/IccOverClocking.h
@@ -0,0 +1,278 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+//**********************************************************************
+//
+// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccProtocolLib/IccOverClocking/IccOverClocking.h 3 5/14/12 4:45a Klzhan $
+//
+// $Revision: 3 $
+//
+// $Date: 5/14/12 4:45a $
+//
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccProtocolLib/IccOverClocking/IccOverClocking.h $
+//
+// 3 5/14/12 4:45a Klzhan
+// [TAG] EIP89676
+// [Category] Spec Update
+// [Severity] Important
+// [Description] Update ICC library
+//
+// 2 5/11/12 3:37a Klzhan
+// [TAG] EIP89676
+// [Category] Spec Update
+// [Severity] Important
+// [Description] Update New ICC library 9.0.0.5
+//
+// 1 2/08/12 1:05a Klzhan
+// Initial Check in
+//
+// 3 9/06/11 6:09a Klzhan
+// [TAG] EIP67462
+// [Category] Spec Update
+// [Severity] Important
+// [Description] Update ICC 08.00.00.022.1
+//
+// 2 6/23/11 11:29p Klzhan
+// [TAG] EIP62129
+// [Category] Spec Update
+// [Severity] Important
+// [Description] Update ICC control Library to 8.0.0.19.
+// [Files] IccOverClocking.efi, IccOverClocking.h
+//
+// 1 2/25/11 1:42a Klzhan
+// Initial Check-in
+//
+// 1 12/03/10 5:10a Klzhan
+// Initial Check-in.
+//
+//
+//**********************************************************************
+
+//<AMI_FHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: IccOverClocking.h
+//
+// Description: ICC OverClocking protocol
+//
+//----------------------------------------------------------------------------
+//<AMI_FHDR_END>
+/*++
+
+ Any software source code reprinted in this document is furnished under
+ a software license and may only be used or copied in accordance with
+ the terms of that license.
+
+
+ Copyright 2010-2011, Intel Corporation. All rights reserved.
+
+--*/
+
+#ifndef _ICC_OVERCLOCKING_H_
+#define _ICC_OVERCLOCKING_H_
+
+/* Types used by ICC LIB */
+
+typedef enum _ICC_LIB_STATUS
+{
+ ICC_LIB_STATUS_SUCCESS, // 0
+ ICC_LIB_STATUS_INVALID_PARAMS, // 1
+ ICC_LIB_STATUS_INVALID_CLOCK_NUMBER, // 2
+ ICC_LIB_STATUS_CLOCK_NOT_FOUND, // 3
+ ICC_LIB_STATUS_INVALID_FREQ_VALUE, // 4
+ ICC_LIB_STATUS_FREQ_TOO_LOW, // 5
+ ICC_LIB_STATUS_FREQ_TOO_HIGH, // 6
+ ICC_LIB_STATUS_FREQ_MUST_HAVE_ZERO_SSC, // 7
+ ICC_LIB_STATUS_SSC_CHANGE_NOT_ALLOWED, // 8
+ ICC_LIB_STATUS_INVALID_SSC_MODE, // 9
+ ICC_LIB_STATUS_SSC_MODE_NOT_SUPPORTED, // a
+ ICC_LIB_STATUS_SSC_OUT_OF_RANGE, // b
+ ICC_LIB_STATUS_SSC_TOO_HIGH, // c
+ ICC_LIB_STATUS_SSC_TOO_LOW, // d
+ ICC_LIB_STATUS_SSC_CHANGE_NOT_ALLOWED_SSC_DISABLED, // e
+ ICC_LIB_STATUS_DYNAMIC_CHANGE_NOT_ALLOWED, // f
+ ICC_LIB_STATUS_INVALID_DMI_PEG_RATIO, // 10
+ ICC_LIB_STATUS_REGISTER_IS_LOCKED, // 11
+ ICC_LIB_STATUS_MEI_INITIALIZATION_FAILED, // 12
+ ICC_LIB_STATUS_MEI_CONNECTION_FAILED, // 13
+ ICC_LIB_STATUS_UNEXPECTED_FW_ERROR, // 14
+ ICC_LIB_STATUS_UNSUPPORTED_HW, // 15
+ ICC_LIB_STATUS_CLOCK_DISABLED_FAILED_PROGRAMMING, // 16
+ ICC_LIB_STATUS_FREQ_AND_SSC_NOT_MATCH, // 17
+ ICC_LIB_STATUS_WAITING_FOR_WARM_RESET, // 18
+ ICC_LIB_STATUS_NOT_ALLOWED_IN_USER_MODE, // 19
+ ICC_LIB_STATUS_TOO_MANY_CONNECTIONS, // 1a
+ ICC_LIB_STATUS_INVALID_COOKIE, // 1b
+ ICC_LIB_STATUS_DMI_PEG_RATIO_CHANGE_NOT_ALLOWED, // 1c
+ ICC_LIB_STATUS_NO_USAGE_DEFINED_FOR_THE_CLOCK, // 1d
+ ICC_LIB_STATUS_DATA_NOT_AVAILABLE, // 1e
+
+ ICC_LIB_STATUS_UNSPECIFIED_ERROR = 0xFFFF
+} ICC_LIB_STATUS;
+
+ typedef enum _ICC_CLOCK_USAGE
+ {
+ ICC_CLOCK_USAGE_BCLK = 0,
+ ICC_CLOCK_USAGE_DMI,
+ ICC_CLOCK_USAGE_PEG,
+ ICC_CLOCK_USAGE_PCIE,
+ ICC_CLOCK_USAGE_PCI33,
+ ICC_CLOCK_USAGE_RESERVED,
+ ICC_CLOCK_USAGE_SATA,
+ ICC_CLOCK_USAGE_USB3,
+ ICC_CLOCK_USAGE_DISPLAY,
+ ICC_CLOCK_USAGE_DISPLAY_NON_SPREAD,
+ ICC_CLOCK_USAGE_27MHZ_DOWN_GFX,
+ ICC_CLOCK_USAGE_DISPLAY_VGA,
+ ICC_CLOCK_USAGE_USB_LEGACY,
+ ICC_CLOCK_USAGE_14_31818_MHZ
+ } ICC_CLOCK_USAGE;
+
+// @brief Defines a generic version structure used in the software build process.
+typedef struct _ICC_LIB_VERSION
+{
+ UINT16 Major;
+ UINT16 Minor;
+ UINT16 Hotfix;
+ UINT16 Build;
+} ICC_LIB_VERSION;
+
+// ssc mode
+typedef enum _ICC_SSC_MODE
+ {
+ ICC_SSC_NONE = 0, // if used in SET, it means DONT CARE and current percent
+ // value will be used regardless of percent value
+ ICC_SSC_UP = 1,
+ ICC_SSC_CENTER = 2,
+ ICC_SSC_DOWN = 4
+} ICC_SSC_MODE;
+
+typedef UINT32 ICC_CLOCK_FREQUENCY;
+
+// Ratio used to modify the BCLK value and to produce
+// the PEG Slot Frequency (~100MHz). BCLK / ratio = PEG
+// Used in HW where the BCLK, DMI, & PEG use a common clock
+typedef enum _ICC_DMI_PEG_RATIO
+{
+ ICC_DMI_PEG_RATIO_5_TO_5 = 0, //< 5/5 = 1 - 1:1 ratio used when BCLK at 100MHz
+ ICC_DMI_PEG_RATIO_5_TO_4, //< 5/4 = 1.25 - Used when BCLK around 125MHz
+ ICC_DMI_PEG_RATIO_5_TO_3, //< 5/3 = 1.66 - Used when BCLK around 166MHz
+ ICC_DMI_PEG_RATIO_5_TO_2 //< 5/2 = 2.5 - Used when BCLK around 250MHz
+} ICC_DMI_PEG_RATIO;
+
+typedef struct _ICC_CLOCK_SETTINGS
+{
+ ICC_CLOCK_FREQUENCY Frequency;
+ ICC_SSC_MODE SscMode;
+ UINT8 SscPercent; // encoding example: 1.28% -> SSC_SPREAD value is 128
+ ICC_DMI_PEG_RATIO DmiPegRatio;
+} ICC_CLOCK_SETTINGS;
+
+typedef UINT16 ICC_CLOCK_USAGE_MASK;
+
+typedef struct _ICC_CLOCK_RANGES
+{
+ ICC_CLOCK_FREQUENCY FrequencyMin;
+ ICC_CLOCK_FREQUENCY FrequencyMax;
+ UINT8 SscChangeAllowed;
+ UINT8 SscUpAllowed;
+ UINT8 SscCenterAllowed;
+ UINT8 SscDownAllowed;
+ UINT8 SscPercentMax;
+ // that field is actually still a bit mask, but usually applications will never use it.
+ ICC_CLOCK_USAGE_MASK UsageMask;
+ UINT8 SscHaltAllowed;
+} ICC_CLOCK_RANGES;
+
+typedef UINT8 ICC_CLOCK_ID;
+
+typedef UINT32 ICC_CLOCK_ID_MASK;
+
+typedef enum _ICC_RECORD_INVALIDATION_REASON
+{
+ ICC_LIB_RIR_RECORD_VALID = 0,
+ ICC_LIB_RIR_AC_POWER_LOSS,
+ ICC_LIB_RIR_CMOS_BATTERY_REMOVED,
+ ICC_LIB_RIR_PLATFORM_BOOT_TIMEOUT,
+ ICC_LIB_RIR_WDT_EXPIRED,
+ ICC_LIB_RIR_RESERVED,
+ ICC_LIB_RIR_INVALIDATE_BY_REQUEST,
+ ICC_LIB_RIR_FW_BUG
+} ICC_RECORD_INVALIDATION_REASON;
+
+//
+// GUID for the ICC OverClocking Protocol
+//
+#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000)
+#define ICC_OVERCLOCKING_PROTOCOL_GUID \
+ {0x8e8cbc58, 0x834c, 0x41e3, 0xb8, 0xca, 0xf0, 0x0c, 0xcf, 0x5a, 0x71, 0x7c}
+
+#else
+
+#define ICC_OVERCLOCKING_PROTOCOL_GUID \
+ {0x8e8cbc58, 0x834c, 0x41e3, { 0xb8, 0xca, 0xf0, 0x0c, 0xcf, 0x5a, 0x71, 0x7c } }
+
+#endif
+//
+// Extern the GUID for protocol users.
+//
+extern EFI_GUID gIccOverClockingProtocolGuid;
+
+typedef VOID (EFIAPI *ICC_LIB_GET_INFO) (ICC_LIB_VERSION*, UINT8*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_CLOCK_ID) (ICC_CLOCK_USAGE, ICC_CLOCK_ID_MASK*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_CLOCK_RANGES) (ICC_CLOCK_ID, ICC_CLOCK_RANGES*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_CURRENT_CLOCK_SETTINGS) (ICC_CLOCK_ID, ICC_CLOCK_SETTINGS*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_SET_CURRENT_CLOCK_SETTINGS) (ICC_CLOCK_ID, ICC_CLOCK_SETTINGS, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_BOOT_CLOCK_SETTINGS) (ICC_CLOCK_ID, ICC_CLOCK_SETTINGS*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_SET_BOOT_CLOCK_SETTINGS) (ICC_CLOCK_ID, ICC_CLOCK_SETTINGS, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_DEFAULT_BOOT_SETTINGS) (ICC_CLOCK_ID, ICC_CLOCK_SETTINGS*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_RESET_CLOCK_BOOT_SETTINGS_TO_DEFAULTS) (ICC_CLOCK_ID, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_RESET_ALL_CLOCKS_BOOT_SETTINGS_TO_DEFAULTS) (ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_GET_NEXT_FREQUENCY) (ICC_CLOCK_ID, ICC_CLOCK_FREQUENCY, ICC_CLOCK_FREQUENCY*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_GET_PREVIOUS_FREQUENCY) (ICC_CLOCK_ID, ICC_CLOCK_FREQUENCY, ICC_CLOCK_FREQUENCY*, ICC_LIB_STATUS*);
+typedef VOID (EFIAPI *ICC_LIB_GET_BOOT_CLOCK_SETTINGS_INVALIDATION_REASON) (ICC_RECORD_INVALIDATION_REASON*, ICC_LIB_STATUS*);
+
+
+typedef struct _ICC_OVERCLOCKING_PROTOCOL {
+ ICC_LIB_GET_INFO GetInfo;
+ ICC_LIB_GET_CLOCK_ID GetClockId;
+ ICC_LIB_GET_CLOCK_RANGES GetClockRanges;
+ ICC_LIB_GET_CURRENT_CLOCK_SETTINGS GetCurrentClockSettings;
+ ICC_LIB_SET_CURRENT_CLOCK_SETTINGS SetCurrentClockSettings;
+ ICC_LIB_GET_BOOT_CLOCK_SETTINGS GetBootClockSettings;
+ ICC_LIB_SET_BOOT_CLOCK_SETTINGS SetBootClockSettings;
+ ICC_LIB_GET_DEFAULT_BOOT_SETTINGS GetDefaultClockSettings;
+ ICC_LIB_RESET_CLOCK_BOOT_SETTINGS_TO_DEFAULTS ResetClockBootSettingsToDefaults;
+ ICC_LIB_RESET_ALL_CLOCKS_BOOT_SETTINGS_TO_DEFAULTS ResetAllClocksBootSettingsToDefaults;
+ ICC_GET_NEXT_FREQUENCY GetNextFrequency;
+ ICC_GET_PREVIOUS_FREQUENCY GetPreviousFrequency;
+ ICC_LIB_GET_BOOT_CLOCK_SETTINGS_INVALIDATION_REASON GetBootClockSettingsInvalidationReason;
+} ICC_OVERCLOCKING_PROTOCOL;
+
+#endif /* _ICC_OVERCLOCKING_H_ */
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//************************************************************************* \ No newline at end of file