diff options
Diffstat (limited to 'Board/EM/MeWrapper/Icc/IccSetup')
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.c | 1272 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.h | 167 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccLoadDefault.c | 141 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetup.cif | 16 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetup.h | 139 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetup.mak | 99 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetup.sdl | 263 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetupMenu.sd | 438 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccSetupSubmenu.sd | 239 | ||||
-rw-r--r-- | Board/EM/MeWrapper/Icc/IccSetup/IccStrings.uni | bin | 0 -> 24896 bytes |
10 files changed, 2774 insertions, 0 deletions
diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.c b/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.c new file mode 100644 index 0000000..8dcd104 --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.c @@ -0,0 +1,1272 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccCallbacks.c 11 5/14/14 9:57p Tristinchou $ +// +// $Revision: 11 $ +// +// $Date: 5/14/14 9:57p $ +// +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccCallbacks.c $ +// +// 11 5/14/14 9:57p Tristinchou +// [TAG] EIP167030 +// [Category] Improvement +// [Description] Remove the variable runtime attribute and keep original +// attributes. +// +// 10 8/09/13 2:17a Klzhan +// [TAG] EIP131037 +// [Category] Improvement +// [Description] Skip Using Icc Protocol after End of Post. +// +// 9 5/13/13 2:42a Klzhan +// [TAG] EIPNone +// [Category] Improvement +// [Description] FIx build error when Icc_OverClocking_Support is +// disabled. +// +// 8 12/27/12 6:36a Klzhan +// [TAG] EIP104882 +// [Category] Improvement +// [Description] Avoid running ICC callbacks when Load Default. +// +// 7 10/30/12 8:37a Klzhan +// Support DMI Ratio for new ICC. +// +// 6 9/19/12 5:58a Klzhan +// Avoid time-out in ICC setup Page when return from Shell. +// +// 5 7/02/12 11:43p Klzhan +// [TAG] EIP94113 +// [Category] Spec Update +// [Severity] Important +// [Description] Update ME RC0.6 +// +// 4 5/14/12 5:29a Klzhan +// Remove Debug code +// +// 3 5/14/12 4:47a Klzhan +// [TAG] EIP89676 +// [Category] Spec Update +// [Severity] Important +// [Description] Support New ICC library +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 2 4/24/12 12:30a Klzhan +// Update modulepart to latest +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 6 9/06/11 6:11a Klzhan +// [TAG] EIP67462 +// [Category] Spec Update +// [Severity] Important +// [Description] Update ICC 08.00.00.022.1 +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 5 7/26/11 5:58a Klzhan +// Support EFI 2.3 +// +// 4 6/27/11 3:22a Klzhan +// Correct SscMode when Set frequency. +// +// 3 6/24/11 7:20a Klzhan +// Remove un-use debug message. +// +// 2 6/23/11 11:31p Klzhan +// [TAG] EIP62129 +// [Category] Spec Update +// [Severity] Important +// [Description] Support ICC Control Library 8.0.0.19. +// [Files] IccCallbacks.c, IccCallbacks.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: IccCallbacks.c +// +// Description: Setup hooks for ICC. +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +/*++ +Copyright (c) 2009 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + IccCallbacks.c + +Abstract: + + Setup hooks for ICC. + +--*/ + +#include <AmiDxeLib.h> +#include <Setup.h> +#include <SetupStrTokens.h> +#include "AUTOID.h" +#include "Protocol\AMIPostMgr.h" +#include "Protocol\IccOverClocking\IccOverClocking.h" +#include "IccSetup.h" +#include "IccCallbacks.h" +#include "PchAccess.h" +#ifdef CougarPoint_SUPPORT +#include "Protocol\Wdt\Wdt.h" +#include "Protocol\WdtApp\WdtApp.h" +#endif +#include "Protocol\MePlatformPolicy\MePlatformPolicy.h" + +UINT8 mActiveSubmenu = ICC_CLOCK_COUNT; +ICC_OVERCLOCKING_PROTOCOL* gIccOverClockingProtocol; +ICC_CLOCK_RANGES mRanges[ICC_CLOCK_COUNT]; +CLOCK_DISPLAY_VALUES values; // Store clock Infomations of current page. +UINT16 mBootTimeClkDiv[ICC_CLOCK_COUNT]; +UINT8 mWatchdogEnabled; + +CHAR16* mClockUsageName[] = { + L"BCLK", + L"DMI", + L"PEG", + L"PCIe", + L"PCI33", + L"RESERVED", + L"SATA", + L"USB3", + L"IGD", + L"IGD Bending", + L"RESERVED", + L"GFX", + L"USB Legacy", + L"PCH Legacy" +}; + +CHAR16* mClockName[] = { + L"Clock1", + L"Clock2", + L"Clock3", + L"Clock4", + L"Clock5", + L"Clock6", + L"Clock7", + L"Clock8" +}; + +CHAR16* mClockUsageNone = L"Not used"; + +UINT16* mModeName[] = { + L"Down", + L"Center", + L"Up", + L"None" +}; + +EFI_HII_HANDLE gHiiHandle; +// +// Blocks entry to ICC clock submenus after End Of Post event +// +UINT8 mAfterEndOfPost = 0; + +#define NAME_ARRAY_SIZE (( sizeof(mClockUsageName)/sizeof(mClockUsageName[0]) )) + +#if (SUPPORTED_CLOCKS != ICC_CLOCK_COUNT) +#error Ambiguous number of supported clocks +#endif + +#ifndef StrCat +#define StrCat(a,b) Wcscpy (a + Wcslen (a), b) +#endif + +#define AMI_CALLBACK_CONTROL_UPDATE 1 +#define AMI_CALLBACK_RETRIEVE 2 +#define AMI_CALLBACK_FORM_OPEN 3 +#define AMI_CALLBACK_FORM_CLOSE 4 +#define AMI_CALLBACK_FORM_DEFAULT_STANDARD 0x1000 +#define AMI_CALLBACK_FORM_DEFAULT_MANUFACTURING 0x1001 + +EFI_STATUS +OnReadyToBoot ( +IN EFI_EVENT Event, +IN VOID *Context +) +/*++ +Routine Description: + + This function is executed on ReadyToBoot event. + If permanent or temporary ICC modifications were made, platform needs to be restarted. + Unlike ordinary setup options, ICC modifications can't be programmed to cause automatic reset. + Instead this function, executed on ReadyToBoot event, causes reset. + +Arguments: + Event pointer to event that caused this function to be executed + Context not used here + +Returns: + always SUCCESS +--*/ +{ + mAfterEndOfPost = 1; + pBS->CloseEvent(Event); + if (GetIccPersistentData() == ICC_SETTINGS_RECENTLY_MODIFIED) { + pRS->ResetSystem(EfiResetCold, 0, 0, 0); + } else if (GetIccPersistentData() == ICC_SETTINGS_PREVIOUSLY_MODIFIED) { + SetIccPersistentData(ICC_SETTINGS_NOT_MODIFIED); + } + return EFI_SUCCESS; +} + +VOID +InitICCStrings ( + EFI_HII_HANDLE HiiHandle, + UINT16 Class + ) +/*++ +Routine Description: + + This function is executed when Setup module loads. + Registers OnReadyToBoot function to be executed on ReadyToBoot event. + Remembers HiiHandle, pointer to setup browser's runtime variable store + +Arguments: + HiiHandle + Class + +Returns: + always SUCCESS +--*/ +{ + static UINT8 mInitStringComplete = 0; + EFI_EVENT Event; + EFI_GUID EfiEventReadyToBootGuid = EFI_EVENT_GROUP_READY_TO_BOOT; + + if (mInitStringComplete == 1) { + return; + } else { + if(Class == ADVANCED_FORM_SET_CLASS) { + mInitStringComplete = 1; + gHiiHandle = HiiHandle; + + if (GetIccPersistentData() == ICC_SETTINGS_RECENTLY_MODIFIED) { + SetIccPersistentData(ICC_SETTINGS_PREVIOUSLY_MODIFIED); + } + +#if (EFI_SPECIFICATION_VERSION < 0x00020000) + pBS->CreateEvent ( + EFI_EVENT_SIGNAL_READY_TO_BOOT | EFI_EVENT_NOTIFY_SIGNAL_ALL, + TPL_CALLBACK, + OnReadyToBoot, + NULL, + &Event + ); +#else + pBS->CreateEventEx ( + EFI_EVENT_NOTIFY_SIGNAL, + TPL_CALLBACK, + OnReadyToBoot, + NULL, + &EfiEventReadyToBootGuid, + &Event + ); +#endif + + } + } +} + +EFI_STATUS +InitIccMenu ( + IN ICC_VOLATILE_SETUP_DATA* IccSetupData + ) +/*++ +Routine Description: + Initializes text strings and setup variables connected with ICC menu. + If there is an error during initialization, displays messagebox with error details +Arguments: + Pointer to Icc setup data structure +Returns: + EFI_SUCCESS if everything went OK + otherwise, an ERROR +--*/ +{ + UINTN VariableSize; + UINT8 i; + EFI_STATUS Status; +#if IccOverClocking_SUPPORT + ICC_LIB_STATUS IccStatus; +#endif + ICC_LIB_VERSION Version; + SETUP_DATA SetupData; + EFI_GUID IccOverClockingProtocolGuid = ICC_OVERCLOCKING_PROTOCOL_GUID; + EFI_GUID IccSetupDataGuid = ICC_VOLATILE_SETUP_DATA_GUID; + EFI_GUID SetupGuid = SETUP_GUID; + CALLBACK_PARAMETERS *CallbackParameter = GetCallbackParameters(); + +#if EFI_SPECIFICATION_VERSION >= 0x2001E + if ((CallbackParameter->Action == AMI_CALLBACK_RETRIEVE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_OPEN) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_CLOSE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_STANDARD) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_MANUFACTURING)) + return EFI_SUCCESS; +#endif + + VariableSize = sizeof (SETUP_DATA); + + Status = pRS->GetVariable ( + L"Setup", + &SetupGuid, + NULL, + &VariableSize, + &SetupData + ); + if (EFI_ERROR (Status)) { + return Status; + } + + VariableSize = sizeof(UINT8); + Status = pRS->GetVariable ( + L"AfterReadyToBoot", + &IccSetupDataGuid, + NULL, + &VariableSize, + &mAfterEndOfPost); +#if IccOverClocking_SUPPORT + Status = pBS->LocateProtocol(&IccOverClockingProtocolGuid, NULL, &gIccOverClockingProtocol); + if (EFI_ERROR (Status)) { + return Status; + } + VariableSize = sizeof (UINTN); + mWatchdogEnabled = SetupData.IccWdtEnabled; + + IccStatus = IccInitOverclocking(&Version); + + if ( IccStatus != ICC_LIB_STATUS_SUCCESS ) { + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_INIT_ERROR_STRANGE), IccStatus); + IccSetupData->AllowAdvancedOptions = 0; + return EFI_DEVICE_ERROR; + } +#else + return EFI_SUCCESS; +#endif + // If init success, Set allowadvancedOption true +// IccSetupData->AllowAdvancedOptions = 1; + + InitString( + gHiiHandle, + STRING_TOKEN(STR_ICC_LIB_VERSION_NR), + L"%d.%d.%d.%d", + Version.Major, + Version.Minor, + Version.Hotfix, + Version.Build + ); + if(mAfterEndOfPost != 1) + { + IccSetupData->AllowAdvancedOptions = 1; + for (i=0; i<ICC_CLOCK_COUNT; i++) { + IccGetFrequencies(i, &values); + IccSetupData->Frequency[i] = values.ClkFreqCurrent; + IccSetupData->SscPercent[i] = values.SscPercentCurrent; + IccSetupData->SscMode[i] = values.SscModeCurrent; + // Workaround for architecture bugs: read - don't modify - write sequence doesn't work for some clocks + // These clocks must not be allowed to be modified - they'll cause ICC Lib to return misleading errors + if (/* (values.ClockUsage & (1<<ICC_CLOCK_USAGE_GFX)) || + (values.ClockUsage & (1<<ICC_CLOCK_USAGE_GFX_BENDING)) ||*/ + (values.ClockUsage == 0) + ) { + IccSetupData->ShowSsc[i] = 0; + IccSetupData->ShowClock[i] = 0; + } else { + IccSetupData->ShowSsc[i] = values.SscChangeAllowed; + if (values.ClkFreqMax == values.ClkFreqMin) { + IccSetupData->ShowClock[i] = 0; + } else { + IccSetupData->ShowClock[i] = 1; + } + } + } + }else + IccSetupData->AllowAdvancedOptions = 0; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IccMenuEntry ( + IN EFI_HII_HANDLE HiiHandle, + IN UINT16 Class, + IN UINT16 SubClass, + IN UINT16 Key +) +/*++ +Routine Description: + Setup callback executed when user enters Advanced->ICC menu + Think of it as an entry point to efi overclocking module + Initializes ICC OverClocking and if there are errors, disables entry into submenus + Without access to submenus, it is guaranteed no other callback will be executed. +Arguments: +Returns: + always SUCCESS, but in case of errors entry into submenus is disabled +--*/ +{ + static UINT8 FirstEntry = 1; + static UINT8 EopReported = 0; + ICC_VOLATILE_SETUP_DATA* IccSetupData = NULL; + EFI_STATUS Status; + EFI_GUID IccSetupDataGuid = ICC_VOLATILE_SETUP_DATA_GUID; + UINTN SelectionBufferSize = sizeof(ICC_VOLATILE_SETUP_DATA); + CALLBACK_PARAMETERS *CallbackParameter = GetCallbackParameters(); + EFI_GUID DxePlatformMePolicyGuid = DXE_PLATFORM_ME_POLICY_GUID; + DXE_ME_POLICY_PROTOCOL *DxePlatformMePolicy; + +#if EFI_SPECIFICATION_VERSION >= 0x2001E + if ((CallbackParameter->Action == AMI_CALLBACK_RETRIEVE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_OPEN) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_CLOSE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_STANDARD) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_MANUFACTURING)) + return EFI_SUCCESS; +#endif + + if(mAfterEndOfPost == 0) { + Status = pBS->LocateProtocol(&DxePlatformMePolicyGuid, NULL, &DxePlatformMePolicy); + if(!EFI_ERROR (Status)) { + if(DxePlatformMePolicy->MeConfig.EndOfPostDone) { + mAfterEndOfPost = 1; + } + } + } + // + // No changes to ICC menu display + // + if (EopReported == 1 || (FirstEntry ==0 && mAfterEndOfPost == 0)) { + return EFI_SUCCESS; + } + + FirstEntry = 0; + +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = pBS->AllocatePool(EfiBootServicesData, SelectionBufferSize, &IccSetupData); + if(EFI_ERROR(Status)) { + return Status; + } + + Status = HiiLibGetBrowserData(&SelectionBufferSize, + IccSetupData, + &IccSetupDataGuid, + ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); + +#else + IccSetupData = (ICC_VOLATILE_SETUP_DATA*)CallbackParameter->Data->NvRamMap; +#endif + + if (mAfterEndOfPost == 1 && EopReported == 0) { + IccSetupData->AllowAdvancedOptions = 0; + EopReported = 1; + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_AFTER_EOP)); + } else { + Status = InitIccMenu(IccSetupData); + if (EFI_ERROR(Status)) { +// IccSetupData->AllowAdvancedOptions = 0; + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_INIT_ERROR_STRANGE)); + } else { +// IccSetupData->AllowAdvancedOptions = 1; + } + } + + Status = pRS->SetVariable( + ICC_VOLATILE_SETUP_DATA_C_NAME, + &IccSetupDataGuid, + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_NON_VOLATILE, + sizeof(ICC_VOLATILE_SETUP_DATA), + IccSetupData ); + +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = HiiLibSetBrowserData( + SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); + pBS->FreePool(IccSetupData); + +#endif; + + return EFI_SUCCESS; +} + + + +EFI_STATUS +EFIAPI +IccSubmenuEntry ( + IN EFI_HII_HANDLE HiiHandle, + IN UINT16 Class, + IN UINT16 SubClass, + IN UINT16 Key +) + +/*++ +Routine Description: + Setup callback executed when user enters any submenu of Advanced->ICC + Personalizes common strings for that particular clock submenu + Stores information on which submenu we're in, that's needed for other callbacks +Arguments: +Returns: + always SUCCESS +--*/ +{ + UINT8 SubMenuNumber = ICC_CLOCK_COUNT; + CHAR16 StringBuffer[100]; + UINT8 i; + UINT8 NeedComma; + UINT8 LineOverflow; + CALLBACK_PARAMETERS *CallbackParameter = GetCallbackParameters(); + +#if EFI_SPECIFICATION_VERSION >= 0x2001E + if ((CallbackParameter->Action == AMI_CALLBACK_RETRIEVE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_OPEN) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_CLOSE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_STANDARD) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_MANUFACTURING)) + return EFI_SUCCESS; +#endif + + switch (Key) { + case KEY_FORM1: + SubMenuNumber = 0; + break; + case KEY_FORM2: + SubMenuNumber = 1; + break; + case KEY_FORM3: + SubMenuNumber = 2; + break; + case KEY_FORM4: + SubMenuNumber = 3; + break; + case KEY_FORM5: + SubMenuNumber = 4; + break; + case KEY_FORM6: + SubMenuNumber = 5; + break; + case KEY_FORM7: + SubMenuNumber = 6; + break; + case KEY_FORM8: + SubMenuNumber = 7; + break; + default: + ASSERT(FALSE); + } + + if (SubMenuNumber == mActiveSubmenu) { + // + //strings already personalized for this menu, no need to change them + // + return EFI_SUCCESS; + } + + mActiveSubmenu = SubMenuNumber; + + IccGetFrequencies(mActiveSubmenu, &values); + StringBuffer[0] = 0; + NeedComma = 0; + LineOverflow = 0; + + // + // Concatenate all clock usages into two strings. If first string gets too long, second will be written + // + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CLOCK_USAGE_2), L"%s", StringBuffer); + if (values.ClockUsage != 0) { + for (i=0; i<NAME_ARRAY_SIZE; i++) { + if (values.ClockUsage & (1<<i)) { + if (NeedComma == 1) { + StrCat(StringBuffer, L", "); + } + if ( Wcslen(StringBuffer) + Wcslen(mClockUsageName[i]) > 25 ) { + LineOverflow = 1; + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CLOCK_USAGE_1), L"%s", StringBuffer); + StringBuffer[0] = 0; + NeedComma = 0; + } + StrCat(StringBuffer, mClockUsageName[i]); + NeedComma = 1; + } + } + } else { + StrCat(StringBuffer, mClockUsageNone); + } + if (LineOverflow) { + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CLOCK_USAGE_2), L"%s", StringBuffer); + } else { + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CLOCK_USAGE_1), L"%s", StringBuffer); + } + + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CLOCK_NUMBER), L"%s", mClockName[SubMenuNumber]); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_MAX_FREQUENCY_VALUE), L"%d.%02d MHz", values.ClkFreqMax/100, values.ClkFreqMax%100); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_MIN_FREQUENCY_VALUE), L"%d.%02d MHz", values.ClkFreqMin/100, values.ClkFreqMin%100); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CURRENT_FREQUENCY_VALUE), L"%d.%02d MHz", values.ClkFreqCurrent/100, values.ClkFreqCurrent%100); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_MODES_VALUE), L"%s%s%s", + (values.SscModeDownAvailable) ? L"Down " : L" ", + (values.SscModeCenterAvailable)? L"Center " : L" ", + (values.SscModeUpAvailable) ? L"Up " : L" " + ); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_CURRENT_MODE_VALUE), L"%s", mModeName[values.SscModeCurrent]); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_MAX_VALUE), L"%d.%02d%%", values.SscPercentMax/100, values.SscPercentMax%100); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_CURRENT_VALUE), L"%d.%02d%%", values.SscPercentCurrent/100, values.SscPercentCurrent%100); + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IccAccept ( + IN EFI_HII_HANDLE HiiHandle, + IN UINT16 Class, + IN UINT16 SubClass, + IN UINT16 Key +) +/*++ +Routine Description: + Setup callback executed when user chooses 'Accept' + Sends requested clock parameters to ICC OverClocking +Arguments: + interface to ITEM_CALLBACK_EX +Returns: + always SUCCESS +--*/ +{ + EFI_STATUS Status; + ICC_VOLATILE_SETUP_DATA* IccSetupData = NULL; + CLOCK_DISPLAY_VALUES values; + UINT8 TypeOfChange; + UINTN VarSize = 0; +#if EFI_SPECIFICATION_VERSION>0x20000 + UINTN SelectionBufferSize = sizeof(ICC_VOLATILE_SETUP_DATA); + EFI_GUID IccSetupDataGuid = ICC_VOLATILE_SETUP_DATA_GUID; +#endif + CALLBACK_PARAMETERS *CallbackParameter = GetCallbackParameters(); + +#if EFI_SPECIFICATION_VERSION >= 0x2001E + if ((CallbackParameter->Action == AMI_CALLBACK_RETRIEVE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_OPEN) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_CLOSE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_STANDARD) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_DEFAULT_MANUFACTURING)) + return EFI_SUCCESS; +#endif + + switch (Key) { + case KEY_CHANGE_NOW1: + case KEY_CHANGE_NOW2: + case KEY_CHANGE_NOW3: + case KEY_CHANGE_NOW4: + case KEY_CHANGE_NOW5: + case KEY_CHANGE_NOW6: + TypeOfChange = IMMEDIATE; + break; + case KEY_CHANGE_ONCE1: + case KEY_CHANGE_ONCE2: + case KEY_CHANGE_ONCE3: + case KEY_CHANGE_ONCE4: + case KEY_CHANGE_ONCE5: + case KEY_CHANGE_ONCE6: + TypeOfChange = TEMPORARY; + break; + case KEY_CHANGE_PERM1: + case KEY_CHANGE_PERM2: + case KEY_CHANGE_PERM3: + case KEY_CHANGE_PERM4: + case KEY_CHANGE_PERM5: + case KEY_CHANGE_PERM6: + TypeOfChange = PERMANENT; + break; + default: + ASSERT(FALSE); + TypeOfChange = 0; //prevent compilator warning + } + +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = pBS->AllocatePool(EfiBootServicesData, SelectionBufferSize, &IccSetupData); + if(EFI_ERROR(Status)) + return Status; + + Status = HiiLibGetBrowserData( + &SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); +#else + IccSetupData = (ICC_VOLATILE_SETUP_DATA*)CallbackParameter->Data->NvRamMap; +#endif + Status = SendClockChangeRequest(IccSetupData, mActiveSubmenu, TypeOfChange); + IccGetFrequencies(mActiveSubmenu, &values); + + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_CURRENT_FREQUENCY_VALUE), L"%d.%02d MHz", values.ClkFreqCurrent/100, values.ClkFreqCurrent%100); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_CURRENT_MODE_VALUE), L"%s", mModeName[values.SscModeCurrent]); + InitString(gHiiHandle, STRING_TOKEN(STR_ICC_SSC_CURRENT_VALUE), L"%d.%02d%%", values.SscPercentCurrent/100, values.SscPercentCurrent%100); + +#if EFI_SPECIFICATION_VERSION>0x20000 + pBS->FreePool(IccSetupData); +#endif; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IccFreqChange ( + IN EFI_HII_HANDLE HiiHandle, + IN UINT16 Class, + IN UINT16 SubClass, + IN UINT16 Key +) +/*++ +Routine Description: + Setup callback executed when user changes frequency + Calls IccFrequencyRounding() which fixes frequency and SSC parameters to allowed values + Having these parameters fixed decreases number of errors caused by sending wrong parameters +Arguments: +Returns: + always SUCCESS +--*/ +{ + EFI_STATUS Status; + ICC_VOLATILE_SETUP_DATA* IccSetupData = NULL; + ICC_CLOCK_FREQUENCY ExpectFrequency, UserFrequency; + BOOLEAN HigherFrequency = FALSE; + ICC_LIB_STATUS IccStatus; +#if EFI_SPECIFICATION_VERSION>0x20000 + UINTN SelectionBufferSize = sizeof(ICC_VOLATILE_SETUP_DATA); + EFI_GUID IccSetupDataGuid = ICC_VOLATILE_SETUP_DATA_GUID; +#endif + + CALLBACK_PARAMETERS *CallbackParameter = GetCallbackParameters(); + +#if EFI_SPECIFICATION_VERSION >= 0x2001E + if ((CallbackParameter->Action == AMI_CALLBACK_RETRIEVE) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_OPEN) || + (CallbackParameter->Action == AMI_CALLBACK_FORM_CLOSE)) + return EFI_SUCCESS; +#endif + +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = pBS->AllocatePool(EfiBootServicesData, SelectionBufferSize, &IccSetupData); + if(EFI_ERROR(Status)) + return Status; + + Status = HiiLibGetBrowserData( + &SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); +#else + IccSetupData = (ICC_VOLATILE_SETUP_DATA*)CallbackParameter->Data->NvRamMap; +#endif + + UserFrequency = IccSetupData->Frequency[mActiveSubmenu]; + + if(UserFrequency >= values.ClkFreqMax) + { + IccSetupData->Frequency[mActiveSubmenu] = values.ClkFreqMax; +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = HiiLibSetBrowserData( + SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); + + pBS->FreePool(IccSetupData); +#endif; + return EFI_SUCCESS; + } + + if(UserFrequency <= values.ClkFreqMin) + { + IccSetupData->Frequency[mActiveSubmenu] = values.ClkFreqMin; +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = HiiLibSetBrowserData( + SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); + + pBS->FreePool(IccSetupData); +#endif; + return EFI_SUCCESS; + } + + if(UserFrequency > values.ClkFreqCurrent) + HigherFrequency = TRUE; + + { + UserFrequency = (UserFrequency) * 10000; + gIccOverClockingProtocol->GetNextFrequency(mActiveSubmenu, + UserFrequency, + &UserFrequency, + &IccStatus); + + gIccOverClockingProtocol->GetPreviousFrequency(mActiveSubmenu, + UserFrequency, + &ExpectFrequency, + &IccStatus); + } + + if (IccStatus == ICC_LIB_STATUS_SUCCESS) { + IccSetupData->Frequency[mActiveSubmenu] = ExpectFrequency/10000; + } + +#if EFI_SPECIFICATION_VERSION>0x20000 + Status = HiiLibSetBrowserData( + SelectionBufferSize, IccSetupData, + &IccSetupDataGuid, ICC_VOLATILE_SETUP_DATA_C_NAME + ); + ASSERT_EFI_ERROR(Status); + + pBS->FreePool(IccSetupData); +#endif; + + return EFI_SUCCESS; +} + +EFI_STATUS +SendClockChangeRequest ( + IN ICC_VOLATILE_SETUP_DATA* IccSetupData, + IN UINT8 ClockID, + IN UINT8 TypeOfChange + ) +/*++ +Routine Description: + Executed by setup calback function + Based on data entered by user, sends clock change requests to ICC OverClocking + Writing to susram or flash requires that old susram and flash contents be invalidated + In case of any problem, messagebox is displayed so user can know what corrective action is required +Arguments: + initial clock divider value +Returns: + validated clock divider value +--*/ +{ + + UINT8 answer = 1; + ICC_LIB_STATUS IccStatus; + ICC_CLOCK_SETTINGS RequestSetting; + BOOLEAN freqConsolidationBypass = TRUE, permanentChange; + + if(TypeOfChange == PERMANENT) + permanentChange = TRUE; + + if(TypeOfChange == TEMPORARY) + permanentChange = FALSE; + + // Prepare Setting + gIccOverClockingProtocol->GetCurrentClockSettings(ClockID, &RequestSetting, &IccStatus); + RequestSetting.Frequency = IccSetupData->Frequency[ClockID] * 10000; + RequestSetting.SscMode = SscNumberToSscMode(IccSetupData->SscMode[ClockID]); + RequestSetting.SscPercent = (UINT8)IccSetupData->SscPercent[ClockID]; + // Only ICC_DMI_PEG_RATIO_5_TO_5 is support in PPT. + RequestSetting.DmiPegRatio = (UINT8)IccSetupData->DmiPegRatio[ClockID]; + + if(TypeOfChange == IMMEDIATE) + { + gIccOverClockingProtocol->SetCurrentClockSettings(ClockID, + RequestSetting, + &IccStatus); + }else + { + gIccOverClockingProtocol->SetBootClockSettings(ClockID, + RequestSetting, + &IccStatus); + } + + if (IccStatus != ICC_LIB_STATUS_SUCCESS) { + if (TypeOfChange == TEMPORARY) { + MessageBox (MSGBOX_TYPE_OKCANCEL, &answer, STRING_TOKEN(STR_ICC_MSGBOX_ONCE_OVERWRITE)); + } else if (TypeOfChange == PERMANENT) { + MessageBox (MSGBOX_TYPE_OKCANCEL, &answer, STRING_TOKEN(STR_ICC_MSGBOX_PERM_OVERWRITE)); + } + if (answer != MSGBOX_YES) { + return ICC_LIB_STATUS_SUCCESS; + } + } + + switch (IccStatus) { + case ICC_LIB_STATUS_DYNAMIC_CHANGE_NOT_ALLOWED: + MessageBox (MSGBOX_TYPE_OKCANCEL, &answer, STRING_TOKEN(STR_ICC_MSGBOX_NO_DYNAMIC), mClockName[ClockID]); + break; + case ICC_LIB_STATUS_REGISTER_IS_LOCKED: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_LOCKED)); + break; + case ICC_LIB_STATUS_FREQ_TOO_HIGH: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_FREQ_HIGH), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_FREQ_TOO_LOW: + MessageBox (MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_FREQ_LOW), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_SSC_TOO_HIGH: + case ICC_LIB_STATUS_SSC_OUT_OF_RANGE: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SSC_HIGH), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_SSC_TOO_LOW: + MessageBox (MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SSC_LOW), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_SSC_MODE_NOT_SUPPORTED: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SSC_MODE), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_FREQ_MUST_HAVE_ZERO_SSC: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SSC_DISABLED), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_SSC_CHANGE_NOT_ALLOWED: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SSC_CONSTANT), mClockName[ClockID] ); + break; + case ICC_LIB_STATUS_MEI_INITIALIZATION_FAILED: + case ICC_LIB_STATUS_MEI_CONNECTION_FAILED: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_HECI)); + break; + case ICC_LIB_STATUS_SUCCESS: + if (TypeOfChange == IMMEDIATE) { + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SUCCESS)); + } else { + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_SUCCESS_NEED_REBOOT)); + } + break; + default: + MessageBox ( MSGBOX_TYPE_OK, NULL, STRING_TOKEN(STR_ICC_MSGBOX_UNKNOWN), IccStatus ); + break; + } + + return IccStatus; +} + +EFI_STATUS +MessageBox ( + IN UINT8 type, + OPTIONAL OUT UINT8* answer, + IN UINT16 StringId, + ... + ) +/*++ +Routine Description: + Wrapper function that displays messagebox. Text for Messagebox is specified with printf-like parameters. + Arguments: + type - messagebox type + answer - pointer to where user's answer will be stored + format, ... - parameters to printf +Returns: +--*/ +{ + static AMI_POST_MANAGER_PROTOCOL* pAmiPostMgr = NULL; + EFI_GUID AmiPostManagerProtocolGuid = AMI_POST_MANAGER_PROTOCOL_GUID; + EFI_STATUS Status; + UINT8 LocalAnswer; + CHAR16* StrBuffer = 0; + CHAR16* LocalBuffer; + UINTN LocalBufferSize; + UINTN StrLen = 0; + va_list ArgList = va_start(ArgList,StringId); + + if (pAmiPostMgr == NULL) { + Status = pBS->LocateProtocol(&AmiPostManagerProtocolGuid, NULL, &pAmiPostMgr); + ASSERT (pAmiPostMgr); + ASSERT_EFI_ERROR (Status); + } + + HiiLibGetString(gHiiHandle, StringId, &StrLen, StrBuffer); + Status = pBS->AllocatePool(EfiBootServicesData, StrLen, &StrBuffer); + ASSERT_EFI_ERROR(Status); + HiiLibGetString(gHiiHandle, StringId, &StrLen, StrBuffer); + + LocalBufferSize = (StrLen+1)*2; + + while (1) { + Status = pBS->AllocatePool(EfiBootServicesData, LocalBufferSize, &LocalBuffer); + ASSERT_EFI_ERROR(Status); + if (LocalBufferSize <= Swprintf_s_va_list(LocalBuffer, LocalBufferSize, StrBuffer, ArgList) ) { + Status = pBS->FreePool(LocalBuffer); + ASSERT_EFI_ERROR(Status); + LocalBufferSize*=2; + } else { + break; + } + } + + va_end(ArgList); + + Status = pAmiPostMgr->DisplayMsgBox(L"Intel ICC", LocalBuffer, type, &LocalAnswer); + pBS->FreePool(StrBuffer); + pBS->FreePool(LocalBuffer); + + ASSERT_EFI_ERROR (Status); + if (answer != NULL) { + *answer = LocalAnswer; + } + return Status; +} + +ICC_LIB_STATUS +EFIAPI +IccInitOverclocking ( + ICC_LIB_VERSION* Version + ) +/*++ +Routine Description: + Initializes ICC OverClocking and asks about initial clock-related data. The data is: + clock parameters from CURRENT record (will be displayed as current and boot-time frequencies) + clock parameters from FLASH record (needed in case we try to write flash record later) + clock ranges - max/min supported frequencies +Arguments: + +Returns: + EFI_SUCCESS - if there were no errors, updates global variables + EFI_DEVICE_ERROR - if there were errors when interfacing ICC OverClocking + +--*/ +{ + UINT8 i; + ICC_LIB_STATUS IccStatus; + + gIccOverClockingProtocol->GetInfo(Version, &i, &IccStatus); + + if (IccStatus != ICC_LIB_STATUS_SUCCESS) { + TRACE ((TRACE_ALWAYS, "(ICC) IccOverClocking failed to start. IccStatus=0x%x, version = %d.%d.%d.%d\n", IccStatus, Version->Major, Version->Minor, Version->Hotfix, Version->Build)); + return IccStatus; + } + + return 0; +} + +VOID +IccGetFrequencies ( + IN UINT8 ClockNumber, + OUT CLOCK_DISPLAY_VALUES* Values + ) +/*++ +Routine Description: + Called by Setup module, feeds it with clock data required to display all clock related information on bios setup screen + Converts data from clock divider value to clock frequency +Arguments: + ClockNumber - data for which clock should be returned +Returns: + values - clock-related data required to display values on ICC setup screen +--*/ +{ + ICC_LIB_STATUS IccStatus; + ICC_CLOCK_RANGES ClockRange; + ICC_CLOCK_SETTINGS Clocksetting; + + gIccOverClockingProtocol->GetClockRanges(ClockNumber, &ClockRange, &IccStatus); + Values->ClockUsage = (UINT16)ClockRange.UsageMask; + Values->ClkFreqMax = ClockRange.FrequencyMax/10000; + Values->ClkFreqMin = ClockRange.FrequencyMin/10000; + Values->SscChangeAllowed = (UINT8)ClockRange.SscChangeAllowed; + Values->SscModeCenterAvailable = (UINT8)ClockRange.SscCenterAllowed; + Values->SscModeUpAvailable = (UINT8)ClockRange.SscUpAllowed; + Values->SscModeDownAvailable = (UINT8)ClockRange.SscDownAllowed; + Values->SscPercentMax = (UINT16)ClockRange.SscPercentMax; + + gIccOverClockingProtocol->GetCurrentClockSettings(ClockNumber, &Clocksetting, &IccStatus); + Values->ClkFreqCurrent = Clocksetting.Frequency/10000; + Values->SscPercentCurrent = (UINT16)Clocksetting.SscPercent; + Values->SscModeCurrent = SscModeToSscNumber(Clocksetting.SscMode); + +} + +UINT32 +SscNumberToSscMode ( + IN UINT8 SscModeNumber + ) +/*++ +Routine Description: + Converts SSC mode description. ICC OverClocking uses 3 bit one-hot format. + For displaying things in BIOS setup, numeric value is more convenient + This function should be called 3 times, once for each bit in ICC OverClocking format. +Arguments: + SscModeNumber - mode number from BIOS setup + Mode - particular mode we're checking for +Returns: + 0 - SSC number does not represent Mode + 1 - SSC number represents Mode +--*/ +{ + switch(SscModeNumber) + { + case SSC_MODE_NONE: + return ICC_SSC_NONE; + + case SSC_MODE_UP: + return ICC_SSC_UP; + + case SSC_MODE_CENTER: + return ICC_SSC_CENTER; + + case SSC_MODE_DOWN: + return ICC_SSC_DOWN; + + default: + TRACE ((TRACE_ALWAYS, "(ICC) Invalid SscModeNumber value \n")); + EFI_DEADLOOP(); + return 0; + } +}; + +UINT8 +SscModeToSscNumber ( + IN UINT8 SscMode + ) +/*++ +Routine Description: + Converts SSC mode description. ICC OverClocking uses 3 bit one-hot format. BIOS setup requires 8bit numeric value. +Arguments: + three bits from ICC OverClocking format +Returns: + SSC mode in BIOS setup format +--*/ +{ + switch(SscMode) + { + case ICC_SSC_NONE: + return SSC_MODE_NONE; + + case ICC_SSC_UP: + return SSC_MODE_UP; + + case ICC_SSC_CENTER: + return SSC_MODE_CENTER; + + case ICC_SSC_DOWN: + return SSC_MODE_DOWN; + + default: + TRACE ((TRACE_ALWAYS, "(ICC) Invalid SscMode value \n")); + EFI_DEADLOOP(); + return 0; + } +} + +VOID +SetIccPersistentData ( + IN UINT8 FlowPhase +) +/*++ +Routine Description: + Sets ClocksModified field of IccPersistentData EFI variable +Arguments: + new value of IccPersistentData +Returns: + none +--*/ +{ + + EFI_GUID IccPersistentDataGuid = ICC_PERSISTENT_DATA_GUID; + ICC_PERSISTENT_DATA IccPersistentData; + + IccPersistentData.ClocksModified = FlowPhase; + + pRS->SetVariable( + L"IccPersistentData", + &IccPersistentDataGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, + sizeof(IccPersistentData), + &IccPersistentData ); +} + +UINT8 +GetIccPersistentData ( + VOID +) +/*++ +Routine Description: + Reads IccPersistentData EFI variable +Arguments: + none +Returns: + value of ClocksModified field +--*/ +{ + EFI_GUID IccPersistentDataGuid = ICC_PERSISTENT_DATA_GUID; + ICC_PERSISTENT_DATA IccPersistentData; + UINTN VariableSize; + EFI_STATUS Status; + VariableSize = sizeof(IccPersistentData); + + Status = pRS->GetVariable( + L"IccPersistentData", + &IccPersistentDataGuid, + NULL, + &VariableSize, + &IccPersistentData ); + if(EFI_ERROR(Status)) + return ICC_SETTINGS_NOT_MODIFIED; + else + return IccPersistentData.ClocksModified; +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.h b/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.h new file mode 100644 index 0000000..24bae4c --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccCallbacks.h @@ -0,0 +1,167 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccCallbacks.h 3 10/30/12 8:37a Klzhan $ +// +// $Revision: 3 $ +// +// $Date: 10/30/12 8:37a $ +// +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccCallbacks.h $ +// +// 3 10/30/12 8:37a Klzhan +// Support DMI Ratio for new ICC. +// +// 2 5/14/12 4:47a Klzhan +// [TAG] EIP89676 +// [Category] Spec Update +// [Severity] Important +// [Description] Support New ICC library +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 3 6/27/11 10:46p Klzhan +// Update SscNumberToSscMode() for New Icc Control Library. +// +// 2 6/23/11 11:31p Klzhan +// [TAG] EIP62129 +// [Category] Spec Update +// [Severity] Important +// [Description] Support ICC Control Library 8.0.0.19. +// [Files] IccCallbacks.c, IccCallbacks.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: IccCallbacks.h +// +// Description: Setup hooks for ICC. +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +/*++ +Copyright (c) 2009 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + IccCallbacks.h + +Abstract: + + Setup hooks for ICC + +--*/ + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) > (b) ? (b) : (a)) + +#define ICC_CLOCK_COUNT 8 + +typedef struct _CLOCK_DISPLAY_VALUES { + UINT32 ClkFreqMax; + UINT32 ClkFreqMin; + UINT32 ClkFreqCurrent; + UINT16 SscPercentMax; + UINT16 SscPercentCurrent; + UINT16 ClockUsage; + UINT8 SscChangeAllowed; + UINT8 SscModeUpAvailable; + UINT8 SscModeCenterAvailable; + UINT8 SscModeDownAvailable; + UINT8 SscModeCurrent; + UINT8 DmiPegRatio; +} CLOCK_DISPLAY_VALUES; + +typedef struct _ICC_CLK_REQUEST { + UINT16 Frequency; + UINT16 SscPercent; + UINT8 SscAllowed; + UINT8 SscMode; + UINT8 EveryBoot; +} ICC_CLK_REQUEST; + +#define IMMEDIATE 0 +#define TEMPORARY 1 +#define PERMANENT 2 + +#define SSC_MODE_NONE 3 +#define SSC_MODE_UP 2 +#define SSC_MODE_CENTER 1 +#define SSC_MODE_DOWN 0 + +#define ROUND_UP 1 +#define ROUND_DOWN 0 + +EFI_STATUS SendClockChangeRequest (IN ICC_VOLATILE_SETUP_DATA* IccSetupData, IN UINT8 ClkMask, IN UINT8 TypeOfChange); +EFI_STATUS MessageBox (IN UINT8 type, OUT UINT8* answer, IN UINT16 StringId, ...); +UINT16 FrequencyToDivider (IN UINT16 Frequency); +UINT16 DividerToFrequency (IN UINT16 Divider); +UINT16 FixDividerValue (IN UINT16 Divider, IN UINT8 Direction); +UINT32 SscNumberToSscMode (IN UINT8 SscModeNumber); +UINT8 SscModeToSscNumber (IN UINT8 SscMode); +ICC_LIB_STATUS IccInitOverclocking (ICC_LIB_VERSION*); +ICC_LIB_STATUS IccInvalidateRecord (IN UINT8 RecordType); +VOID IccGetFrequencies (IN UINT8 ClockNumber, OUT CLOCK_DISPLAY_VALUES* values); +EFI_STATUS IccRoundFrequency (IN OUT ICC_CLK_REQUEST* IccSetupData, IN UINT8 ClockNumber); +ICC_LIB_STATUS IccSendRequestRecord (IN UINT8 TypeOfChange, IN UINT32 ClockMask, IN ICC_CLK_REQUEST* IccExchange, OUT UINT8* ErrorLocation); +UINTN Wcslen(CHAR16 *string); +CHAR16* Wcscpy(CHAR16 *string1, CHAR16* string2); +VOID StrCat (IN OUT CHAR16 *Destination, IN CHAR16 *Source); +VOID SetIccPersistentData (IN UINT8 FlowPhase); +UINT8 GetIccPersistentData (VOID); + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccLoadDefault.c b/Board/EM/MeWrapper/Icc/IccSetup/IccLoadDefault.c new file mode 100644 index 0000000..94c558f --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccLoadDefault.c @@ -0,0 +1,141 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccLoadDefault.c 3 2/22/13 2:27a Klzhan $ +// +// $Revision: 3 $ +// +// $Date: 2/22/13 2:27a $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccLoadDefault.c $ +// +// 3 2/22/13 2:27a Klzhan +// [TAG] EIP115268 +// [Category] Bug Fix +// [Severity] Important +// [Symptom] Icc Setup Item be hidden after load default(F3) +// [RootCause] New TSE check gGrowserCallbackEnabled +// [Solution] Enable gGrowserCallbackEnabled when call HiiSetBrowserData +// +// 2 4/24/12 12:31a Klzhan +// Update modulepart to latest +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 1 5/04/11 3:08a Klzhan +// EIP58767 : ICC Setup item will not be hidden when load default. +// +// 1 11/01/10 9:42a Tonywu +// Fix that the "ICC OverClocking" form will be hidden when setup loads +// defaults. +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: IccLoadDefault.c +// +// Description: Enter when loaded default in SETUP. +// +//<AMI_FHDR_END> +//********************************************************************** + +#include <Setup.h> +#include <AmiLib.h> +#include <AmiDxeLib.h> +#include "IccSetup.h" + +EFI_STATUS FindVariableIndex(CHAR16 *Name, EFI_GUID *Guid, UINT32 *Index); + +extern BOOLEAN gBrowserCallbackEnabled; + +VOID IccSetupLoadDefault(VOID) +{ + UINT8 i; + EFI_STATUS Status; + + UINTN SelectionBufferSize = sizeof(ICC_VOLATILE_SETUP_DATA); + EFI_GUID IccSetupDataGuid = ICC_VOLATILE_SETUP_DATA_GUID; + ICC_VOLATILE_SETUP_DATA* IccSetupData = NULL; + ICC_VOLATILE_SETUP_DATA* TseIccSetupData = NULL; + BOOLEAN OrgBrowserCallbackEnabled = gBrowserCallbackEnabled; + + Status = pBS->AllocatePool(EfiBootServicesData, SelectionBufferSize, &IccSetupData); + if (!EFI_ERROR(Status)) + { + Status = pRS->GetVariable ( + ICC_VOLATILE_SETUP_DATA_C_NAME, + &IccSetupDataGuid, + NULL, + &SelectionBufferSize, + IccSetupData); + ASSERT_EFI_ERROR(Status); + if (!EFI_ERROR(Status)) + { + if (IccSetupData->AllowAdvancedOptions == 1) + { + Status = pBS->AllocatePool(EfiBootServicesData, SelectionBufferSize, &TseIccSetupData); + if(EFI_ERROR(Status)) { + return; + } + gBrowserCallbackEnabled = TRUE; + Status = HiiLibGetBrowserData(&SelectionBufferSize, + TseIccSetupData, + &IccSetupDataGuid, + L"IccAdvancedSetupDataVar" + ); + if(EFI_ERROR(Status)) + { + pBS->FreePool(TseIccSetupData); + gBrowserCallbackEnabled = OrgBrowserCallbackEnabled; + return; + } + + TseIccSetupData->AllowAdvancedOptions = IccSetupData->AllowAdvancedOptions; + for (i=0; i<6 ;i++) + { + TseIccSetupData->ShowClock[i] = IccSetupData->ShowClock[i]; + TseIccSetupData->ShowSsc[i] = IccSetupData->ShowSsc[i]; + TseIccSetupData->Frequency[i] = IccSetupData->Frequency[i]; + TseIccSetupData->SscPercent[i] = IccSetupData->SscPercent[i]; + } + Status = HiiLibSetBrowserData( + SelectionBufferSize, TseIccSetupData, + &IccSetupDataGuid, L"IccAdvancedSetupDataVar"); + + pBS->FreePool(TseIccSetupData); + gBrowserCallbackEnabled = OrgBrowserCallbackEnabled; + + } + } + + } +} + +//************************************************************************* +//************************************************************************* +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//************************************************************************* +//************************************************************************* diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.cif b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.cif new file mode 100644 index 0000000..65e9d9f --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.cif @@ -0,0 +1,16 @@ +<component> + name = "IccSetup" + category = ModulePart + LocalRoot = "Board\EM\MeWrapper\Icc\IccSetup" + RefName = "IccSetup" +[files] +"IccSetup.mak" +"IccSetup.sdl" +"IccCallbacks.c" +"IccCallbacks.h" +"IccSetup.h" +"IccSetupMenu.sd" +"IccSetupSubmenu.sd" +"IccStrings.uni" +"IccLoadDefault.c" +<endComponent> diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.h b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.h new file mode 100644 index 0000000..69ae39d --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.h @@ -0,0 +1,139 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccSetup.h 4 10/30/12 8:37a Klzhan $ +// +// $Revision: 4 $ +// +// $Date: 10/30/12 8:37a $ +// +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccSetup.h $ +// +// 4 10/30/12 8:37a Klzhan +// Support DMI Ratio for new ICC. +// +// 3 5/14/12 4:47a Klzhan +// [TAG] EIP89676 +// [Category] Spec Update +// [Severity] Important +// [Description] Support New ICC library +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 2 4/24/12 12:30a Klzhan +// Update modulepart to latest +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 1 2/25/11 1:42a Klzhan +// Initial Check-in +// +// 1 12/03/10 5:10a Klzhan +// Initial Check-in. +// +// +//********************************************************************** + +//<AMI_FHDR_START> +//---------------------------------------------------------------------------- +// +// Name: IccSetup.h +// +// Description: Setup hooks for ICC. +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +/*++ +Copyright (c) 2009 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + IccSetup.h + +Abstract: + + Setup hooks for ICC + +--*/ +#define SUPPORTED_CLOCKS 8 + +// +// Icc Persistent Data - needs to be remembered after platform power cycle +// +#define ICC_PERSISTENT_DATA_GUID \ +{0x64192dca, 0xd034, 0x49d2, 0xa6, 0xde, 0x65, 0xa8, 0x29, 0xeb, 0x4c, 0x74} + +#define ICC_PERSISTENT_DATA_C_NAME L"IccPersistentData" + +typedef struct _ICC_PERSISTENT_DATA { + UINT8 ClocksModified; +} ICC_PERSISTENT_DATA; + +#define ICC_SETTINGS_NOT_MODIFIED 0 +#define ICC_SETTINGS_RECENTLY_MODIFIED 1 +#define ICC_SETTINGS_PREVIOUSLY_MODIFIED 2 + +// +// Icc Volatile Setup Data - volatile (to prevent flash wear) data used by TSE +// +#define ICC_VOLATILE_SETUP_DATA_GUID \ +{0x7b77fb8b, 0x1e0d, 0x4d7e, 0x95, 0x3f, 0x39, 0x80, 0xa2, 0x61, 0xe0, 0x77} + +#define ICC_VOLATILE_SETUP_DATA_C_NAME L"IccAdvancedSetupDataVar" +#pragma pack(1) +typedef struct _ICC_VOLATILE_SETUP_DATA { + UINT16 Frequency[SUPPORTED_CLOCKS]; + UINT8 SscMode[SUPPORTED_CLOCKS]; + UINT16 SscPercent[SUPPORTED_CLOCKS]; + UINT8 ShowSsc[SUPPORTED_CLOCKS]; + UINT8 ShowClock[SUPPORTED_CLOCKS]; + UINT8 ShowDmiPegRatio[SUPPORTED_CLOCKS]; + UINT8 DmiPegRatio[SUPPORTED_CLOCKS]; + UINT8 ShowProfile; + UINT8 AllowAdvancedOptions; +} ICC_VOLATILE_SETUP_DATA; +#pragma pack() +//************************************************************************* +//************************************************************************* +//** ** +//** (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 diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.mak b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.mak new file mode 100644 index 0000000..24d038e --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.mak @@ -0,0 +1,99 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (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/IccSetup/IccSetup.mak 1 2/08/12 1:07a Klzhan $ +# +# $Revision: 1 $ +# +# $Date: 2/08/12 1:07a $ +# +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccSetup.mak $ +# +# 1 2/08/12 1:07a Klzhan +# Initial Check in +# +# 2 5/04/11 3:06a Klzhan +# EIP58767 : ICC setup items will not be hidden when load default. +# +# 1 2/25/11 1:42a Klzhan +# Initial Check-in +# +# 1 12/03/10 5:10a Klzhan +# Initial Check-in. +# +# +#********************************************************************** +# +#<AMI_FHDR_START> +#---------------------------------------------------------------------------- +# +# Name: IccSetup.mak +# +# Description: Makefile Setup hooks for ICC. +# +#---------------------------------------------------------------------------- +#<AMI_FHDR_END> +All : + +SetupSdbs : $(BUILD_DIR)\IccSetup.sdb + +SetupBin : $(BUILD_DIR)\IccCallbacks.obj + +$(BUILD_DIR)\IccSetup.mak : $(IccSetup_DIR)\$(@B).cif $(IccSetup_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(IccSetup_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +$(BUILD_DIR)\IccSetup.sdb : $(BUILD_DIR)\IccSetup.mak $(IccSetup_DIR)\*.sd $(IccSetup_DIR)\*.uni + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\IccSetup.mak all\ + TYPE=SDB NAME=IccSetup + +$(BUILD_DIR)\IccCallbacks.obj : $(IccSetup_DIR)\IccCallbacks.c + $(CC) $(CFLAGS)\ + $(INTEL_MCH_INCLUDES) \ + $(INTEL_PCH_INCLUDES) \ + $(ME_INCLUDES)\ + $(ICC_INCLUDES)\ + $(NB_INCLUDES) \ + $(WDT_APP_INCLUDES) \ + /Fo$(BUILD_DIR)\ $(IccSetup_DIR)\IccCallbacks.c + +#--------------------------------------------------------------------------- +# Icc SETUP load dafault hook +#--------------------------------------------------------------------------- +AMITSEBin : $(BUILD_DIR)\IccLoadDefault.obj + +IccLoadDefault_CFLAGS=$(CFLAGS) \ + -I $(TSEBIN_DIR)\Inc \ + -I $(TSEBIN_DIR) + +$(BUILD_DIR)\IccLoadDefault.obj : $(IccSetup_DIR)\IccLoadDefault.c + $(CC) $(IccLoadDefault_CFLAGS) /Fo$(BUILD_DIR)\IccLoadDefault.obj $(IccSetup_DIR)\IccLoadDefault.c + +#************************************************************************* +#************************************************************************* +#** ** +#** (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 diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.sdl b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.sdl new file mode 100644 index 0000000..a4ef233 --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetup.sdl @@ -0,0 +1,263 @@ +TOKEN + Name = "IccSetup_SUPPORT" + Value = "1" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes + Master = Yes + Help = "Main switch to enable ICC support in Project in DXE Phase" +End + +MODULE + Help = "Includes IccSetup.mak to Project" + File = "IccSetup.mak" +End + +PATH + Name = "IccSetup_DIR" + Help = "Icc Setup dir" +End + +ELINK + Name = "/I$(IccSetup_DIR)" + Parent = "ICC_INCLUDES" + InvokeOrder = AfterParent +End + +ELINK + Name = "$(BUILD_DIR)\IccSetup.sdb" + Parent = "SETUP_SDBS" + Priority = 86 + InvokeOrder = AfterParent +End + +ELINK + Name = "$(IccSetup_DIR)\IccSetupMenu.sd" + Parent = "SETUP_DEFINITIONS" + Priority = 86 + InvokeOrder = AfterParent +End + +ELINK + Name = "$(IccSetup_DIR)\IccSetupSubmenu.sd" + Parent = "SETUP_DEFINITIONS" + Priority = 86 + InvokeOrder = AfterParent +End + +ELINK + Name = "InitICCStrings," + Parent = "SetupStringInit" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_ICCMENU,IccMenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM1,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM2,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM3,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM4,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM5,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM6,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM7,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FORM8,IccSubmenuEntry)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW1,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW2,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW3,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW4,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW5,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW6,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW7,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_NOW8,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM1,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM2,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM3,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM4,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM5,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM6,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM7,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_CHANGE_PERM8,IccAccept)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ1,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ2,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ3,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ4,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ5,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ6,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ7,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "ITEM_CALLBACK(ADVANCED_FORM_SET_CLASS,0,KEY_FREQ8,IccFreqChange)," + Parent = "SetupItemCallbacks" + InvokeOrder = AfterParent +End + +ELINK + Name = "$(BUILD_DIR)\IccLoadDefault.obj" + Parent = "AMITSE_Objects" + InvokeOrder = AfterParent +End + +ELINK + Name = "IccSetupLoadDefault," + Parent = "LoadSetupDefaults," + InvokeOrder = AfterParent +End
\ No newline at end of file diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetupMenu.sd b/Board/EM/MeWrapper/Icc/IccSetup/IccSetupMenu.sd new file mode 100644 index 0000000..06ed9f7 --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetupMenu.sd @@ -0,0 +1,438 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccSetupMenu.sd 4 12/24/12 6:37a Klzhan $ +// +// $Revision: 4 $ +// +// $Date: 12/24/12 6:37a $ +// +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccSetupMenu.sd $ +// +// 4 12/24/12 6:37a Klzhan +// [TAG] EIP109624 +// [Category] New Feature +// [Description] Support Lock Icc registers. +// +// 3 5/14/12 4:47a Klzhan +// [TAG] EIP89676 +// [Category] Spec Update +// [Severity] Important +// [Description] Support New ICC library +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 2 4/24/12 12:31a Klzhan +// Update modulepart to latest +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 1 2/25/11 1:42a Klzhan +// Initial Check-in +// +// 1 12/03/10 5:10a Klzhan +// Initial Check-in. +// +// +//********************************************************************** + +//<AMI_FHDR_START> +//---------------------------------------------------------------------------- +// +// Name: IccSetup.sd +// +// Description: SD file for ICC Setup +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +/*++ + +Copyright (c) 2009 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + IccSetupMenu.sd + +Abstract: + + Icc's advanced menu layout + +--*/ + +#ifdef SETUP_DATA_DEFINITION + + UINT8 IccWdtEnabled; + UINT8 IccSetClockEnables; + UINT8 IccLockRegisters; + UINT8 IccDisplayProfile; + UINT8 IccSelectedProfile; + UINT8 IccProfileEnable; + +#endif + +#ifdef CONTROL_DEFINITION + #define ICC_GOTO_INTELICC\ + goto ICC_FORM_ID, \ + prompt = STRING_TOKEN(STR_ICC_FORM),\ + help = STRING_TOKEN(STR_ICC_FORM_HELP),\ + flags = INTERACTIVE,\ + key = AUTO_ID(KEY_ICCMENU); +#endif +#ifdef ADVANCED_FORM_SET + +#ifdef FORM_SET_TYPEDEF + +#include "IccSetup.h" + +#endif + + +#ifdef FORM_SET_VARSTORE + + varstore ICC_VOLATILE_SETUP_DATA, + key = AUTO_ID(ICC_VOLATILE_SETUP_DATA_VAR), + name = IccAdvancedSetupDataVar, + guid = ICC_VOLATILE_SETUP_DATA_GUID; + +#endif + +#ifdef FORM_SET_ITEM +#endif + +#ifdef FORM_SET_GOTO + // + // this grayout is always false, but ensures that callback function will receive pointer to ICC_VOLATILE_SETUP_DATA instead SETUP_DATA + // + grayoutif ideqval ICC_VOLATILE_SETUP_DATA.AllowAdvancedOptions == 2; + ICC_GOTO_INTELICC + endif; +#endif + +#ifdef FORM_SET_FORM + #ifndef ICC_FORM_SETUP + #define ICC_FORM_SETUP + + form formid = AUTO_ID(ICC_FORM_ID), + title = STRING_TOKEN(STR_ENABLED); + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + oneof varid = SETUP_DATA.IccWdtEnabled, + prompt = STRING_TOKEN(STR_ICC_WDT_ENABLE), + help = STRING_TOKEN(STR_ICC_WDT_ENABLE_HELP), + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = SETUP_DATA.IccSetClockEnables, + prompt = STRING_TOKEN(STR_ICC_CLOCK_ENABLING), + help = STRING_TOKEN(STR_ICC_CLOCK_ENABLING_HELP), + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED; + endoneof; + + oneof varid = SETUP_DATA.IccLockRegisters, + prompt = STRING_TOKEN(STR_ICC_LOCK_EOP), + help = STRING_TOKEN(STR_ICC_LOCK_HELP), + option text = STRING_TOKEN(STR_ICC_DEFAULT), value = 3, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ICC_LOCK), value = 4, flags = MANUFACTURING | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ICC_UNLOCK), value = 5, flags = RESET_REQUIRED; + endoneof; + endif; + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval SETUP_DATA.IccDisplayProfile == 0; + numeric varid = SETUP_DATA.IccSelectedProfile, + prompt = STRING_TOKEN(STR_ICC_PROFILE), + help = STRING_TOKEN(STR_ICC_PROFILE_HELP), + flags = RESET_REQUIRED, + minimum = 0, + maximum = 7, + step = 1, + default = 0, + endnumeric; + SUPPRESS_GRAYOUT_ENDIF + + SEPARATOR + + SUBTITLE(STRING_TOKEN(STR_ICC_OVERCLOCKING)) + + SEPARATOR + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_LIB_VERSION), + text = STRING_TOKEN(STR_ICC_LIB_VERSION_NR), + flags = 0, key = AUTO_ID(KEY_ACCEPT); + + suppressif ideqval ICC_VOLATILE_SETUP_DATA.AllowAdvancedOptions == 0; + + goto ICC_ADVFORM_ID1, + prompt = STRING_TOKEN(STR_ICC_SUBFORM1), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM1); + + goto ICC_ADVFORM_ID2, + prompt = STRING_TOKEN(STR_ICC_SUBFORM2), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM2); + + goto ICC_ADVFORM_ID3, + prompt = STRING_TOKEN(STR_ICC_SUBFORM3), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM3); + + goto ICC_ADVFORM_ID4, + prompt = STRING_TOKEN(STR_ICC_SUBFORM4), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM4); + + goto ICC_ADVFORM_ID5, + prompt = STRING_TOKEN(STR_ICC_SUBFORM5), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM5); + + goto ICC_ADVFORM_ID6, + prompt = STRING_TOKEN(STR_ICC_SUBFORM6), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM6); + + goto ICC_ADVFORM_ID7, + prompt = STRING_TOKEN(STR_ICC_SUBFORM7), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM7); + + goto ICC_ADVFORM_ID8, + prompt = STRING_TOKEN(STR_ICC_SUBFORM8), + help = STRING_TOKEN(STR_ICC_FORM_HELP), + flags = INTERACTIVE, + key = AUTO_ID(KEY_FORM8); + endif; + + endform; + +#define INSIDE_ICC_SUBMENU + +#define CLOCK_NUMBER OFFSET_0 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ1) +AUTO_ID(KEY_CHANGE_NOW1) +AUTO_ID(KEY_CHANGE_ONCE1) +AUTO_ID(KEY_CHANGE_PERM1) +#endif +#define KEY_FREQ KEY_FREQ1 +#define MENU_NUMBER ICC_ADVFORM_ID1 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW1 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE1 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM1 +form formid = AUTO_ID(ICC_ADVFORM_ID1), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_1 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ2) +AUTO_ID(KEY_CHANGE_NOW2) +AUTO_ID(KEY_CHANGE_ONCE2) +AUTO_ID(KEY_CHANGE_PERM2) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ2 +#define MENU_NUMBER ICC_ADVFORM_ID2 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW2 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE2 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM2 +form formid = AUTO_ID(ICC_ADVFORM_ID2), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_2 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ3) +AUTO_ID(KEY_CHANGE_NOW3) +AUTO_ID(KEY_CHANGE_ONCE3) +AUTO_ID(KEY_CHANGE_PERM3) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ3 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW3 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE3 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM3 +#define MENU_NUMBER ICC_ADVFORM_ID3 +form formid = AUTO_ID(ICC_ADVFORM_ID3), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_3 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ4) +AUTO_ID(KEY_CHANGE_NOW4) +AUTO_ID(KEY_CHANGE_ONCE4) +AUTO_ID(KEY_CHANGE_PERM4) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ4 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW4 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE4 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM4 +#define MENU_NUMBER ICC_ADVFORM_ID4 +form formid = AUTO_ID(ICC_ADVFORM_ID4), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_4 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ5) +AUTO_ID(KEY_CHANGE_NOW5) +AUTO_ID(KEY_CHANGE_ONCE5) +AUTO_ID(KEY_CHANGE_PERM5) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ5 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW5 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE5 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM5 +#define MENU_NUMBER ICC_ADVFORM_ID5 +form formid = AUTO_ID(ICC_ADVFORM_ID5), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_5 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ6) +AUTO_ID(KEY_CHANGE_NOW6) +AUTO_ID(KEY_CHANGE_ONCE6) +AUTO_ID(KEY_CHANGE_PERM6) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ6 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW6 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE6 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM6 +#define MENU_NUMBER ICC_ADVFORM_ID6 +form formid = AUTO_ID(ICC_ADVFORM_ID6), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_6 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ7) +AUTO_ID(KEY_CHANGE_NOW7) +AUTO_ID(KEY_CHANGE_ONCE7) +AUTO_ID(KEY_CHANGE_PERM7) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ7 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW7 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE7 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM7 +#define MENU_NUMBER ICC_ADVFORM_ID7 +form formid = AUTO_ID(ICC_ADVFORM_ID7), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#define CLOCK_NUMBER OFFSET_7 +#ifdef SETUP_DATA_DEFINITION +AUTO_ID(KEY_FREQ8) +AUTO_ID(KEY_CHANGE_NOW8) +AUTO_ID(KEY_CHANGE_ONCE8) +AUTO_ID(KEY_CHANGE_PERM8) +#endif +#undef KEY_FREQ +#define KEY_FREQ KEY_FREQ8 +#define KEY_CHANGE_NOW KEY_CHANGE_NOW8 +#define KEY_CHANGE_ONCE KEY_CHANGE_ONCE8 +#define KEY_CHANGE_PERM KEY_CHANGE_PERM8 +#define MENU_NUMBER ICC_ADVFORM_ID8 +form formid = AUTO_ID(ICC_ADVFORM_ID8), +#include "IccSetupSubmenu.sd" +#undef MENU_NUMBER +#undef KEY_CHANGE_NOW +#undef KEY_CHANGE_ONCE +#undef KEY_CHANGE_PERM +#undef CLOCK_NUMBER + +#undef INSIDE_ICC_SUBMENU + + #endif // ICC_FORM_SETUP + +#endif + +#endif + +//************************************************************************* +//************************************************************************* +//** ** +//** (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 diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccSetupSubmenu.sd b/Board/EM/MeWrapper/Icc/IccSetup/IccSetupSubmenu.sd new file mode 100644 index 0000000..0ebcfab --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccSetupSubmenu.sd @@ -0,0 +1,239 @@ +//************************************************************************* +//************************************************************************* +//** ** +//** (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/IccSetup/IccSetupSubmenu.sd 3 11/20/12 3:09a Klzhan $ +// +// $Revision: 3 $ +// +// $Date: 11/20/12 3:09a $ +// +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/ME/MeWrapper/Icc/IccSetup/IccSetupSubmenu.sd $ +// +// 3 11/20/12 3:09a Klzhan +// [TAG] EIPNone +// [Category] Improvement +// [Description] AMI CSP Intel BIOS Setup Unify Rule. +// +// 2 10/30/12 8:37a Klzhan +// Support DMI Ratio for new ICC. +// +// 1 2/08/12 1:07a Klzhan +// Initial Check in +// +// 2 9/06/11 6:11a Klzhan +// [TAG] EIP67462 +// [Category] Spec Update +// [Severity] Important +// [Description] Update ICC 08.00.00.022.1 +// [Files] IccSetup.mak +// IccSetup.sdl +// IccCallbacks.c +// IccCallbacks.h +// IccSetup.h +// IccSetupMenu.sd +// IccSetupSubmenu.sd +// IccStrings.uni +// IccLoadDefault.c +// IccSetup.cif +// +// 1 2/25/11 1:42a Klzhan +// Initial Check-in +// +// 1 12/03/10 5:10a Klzhan +// Initial Check-in. +// +// +//********************************************************************** + +//<AMI_FHDR_START> +//---------------------------------------------------------------------------- +// +// Name: IccSetup.sd +// +// Description: SD file for ICC Setup +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +/*++ + +Copyright (c) 2009 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + IccSetupSubmenu.sd + +Abstract: + + Icc's overclocking submenu layout + +--*/ + +//This file should be included multiple times into IccSetupMenu.sd + +#ifdef INSIDE_ICC_SUBMENU + +title = STRING_TOKEN(STR_EMPTY); + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_CLOCK_NUMBER), + text = STRING_TOKEN(STR_EMPTY), + flags = 0, key = 0; + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_CLOCK_USAGE_1), + text = STRING_TOKEN(STR_EMPTY), + flags = 0, key = 0; + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_CLOCK_USAGE_2), + text = STRING_TOKEN(STR_EMPTY), + flags = 0, key = 0; + + SEPARATOR + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_MAX_FREQUENCY), + text = STRING_TOKEN(STR_ICC_MAX_FREQUENCY_VALUE), + flags = 0, key = 0; + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_MIN_FREQUENCY), + text = STRING_TOKEN(STR_ICC_MIN_FREQUENCY_VALUE), + flags = 0, key = 0; + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_CURRENT_FREQUENCY), + text = STRING_TOKEN(STR_ICC_CURRENT_FREQUENCY_VALUE), + flags = 0, key = 0; + + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowClock[CLOCK_NUMBER] == 0; + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + numeric varid = ICC_VOLATILE_SETUP_DATA.Frequency[CLOCK_NUMBER], + prompt = STRING_TOKEN(STR_ICC_NEW_FREQUENCY), + help = STRING_TOKEN(STR_ICC_NEW_FREQUENCY_HELP), + flags = INTERACTIVE, + key = KEY_FREQ, + minimum = 0, + maximum = 65535, + step = 1, + default = 0, + endnumeric; + SUPPRESS_GRAYOUT_ENDIF + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowSsc[CLOCK_NUMBER] == 0; + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_SSC_MODES), + text = STRING_TOKEN(STR_ICC_SSC_MODES_VALUE), + flags = 0, key = 0; + SUPPRESS_GRAYOUT_ENDIF + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_SSC_CURRENT_MODE), + text = STRING_TOKEN(STR_ICC_SSC_CURRENT_MODE_VALUE), + flags = 0, key = 0; + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowSsc[CLOCK_NUMBER] == 0; + oneof varid = ICC_VOLATILE_SETUP_DATA.SscMode[CLOCK_NUMBER], + prompt = STRING_TOKEN(STR_ICC_SSC_MODE_SELECTION), + help = STRING_TOKEN(STR_ICC_SSC_MODE_SELECTION_HELP), + option text = STRING_TOKEN(STR_ICC_MODE_DOWN), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_ICC_MODE_CENTRE), value = 1, flags = 0; + option text = STRING_TOKEN(STR_ICC_MODE_UP), value = 2, flags = 0; + endoneof; + SUPPRESS_GRAYOUT_ENDIF + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowSsc[CLOCK_NUMBER] == 0; + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_SSC_MAX), + text = STRING_TOKEN(STR_ICC_SSC_MAX_VALUE), + flags = 0, key = 0; + SUPPRESS_GRAYOUT_ENDIF + + text + help = STRING_TOKEN(STR_EMPTY), + text = STRING_TOKEN(STR_ICC_SSC_CURRENT), + text = STRING_TOKEN(STR_ICC_SSC_CURRENT_VALUE), + flags = 0, key = 0; + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowSsc[CLOCK_NUMBER] == 0; + numeric varid = ICC_VOLATILE_SETUP_DATA.SscPercent[CLOCK_NUMBER], + prompt = STRING_TOKEN(STR_ICC_SSC_NEW_PERCENT), + help = STRING_TOKEN(STR_ICC_SSC_NEW_PERCENT_HELP), + flags = 0, + key = 0, + minimum = 0, + maximum = 999, + step = 1, + default = 0, + endnumeric; + SUPPRESS_GRAYOUT_ENDIF + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowDmiPegRatio[CLOCK_NUMBER] == 0; + oneof varid = ICC_VOLATILE_SETUP_DATA.DmiPegRatio[CLOCK_NUMBER], + prompt = STRING_TOKEN(STR_DMI_PEG_RATIO), + help = STRING_TOKEN(STR_DMI_PEG_RATIO_HELP), + option text = STRING_TOKEN(STR_DMI_PEG_RATIO_55), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_DMI_PEG_RATIO_54), value = 1, flags = 0; + option text = STRING_TOKEN(STR_DMI_PEG_RATIO_53), value = 2, flags = 0; + option text = STRING_TOKEN(STR_DMI_PEG_RATIO_52), value = 3, flags = 0; + endoneof; + SUPPRESS_GRAYOUT_ENDIF + + grayoutif ideqval SYSTEM_ACCESS.Access == SYSTEM_PASSWORD_USER; + suppressif ideqval ICC_VOLATILE_SETUP_DATA.ShowSsc[CLOCK_NUMBER] == 0 AND ideqval ICC_VOLATILE_SETUP_DATA.ShowClock[CLOCK_NUMBER] == 0; + goto MENU_NUMBER,prompt=STRING_TOKEN(STR_ICC_IMMEDIATE_CHANGES),help=STRING_TOKEN(STR_ICC_IMMEDIATE_CHANGES_HELP),flags=INTERACTIVE,key=KEY_CHANGE_NOW; + goto MENU_NUMBER,prompt=STRING_TOKEN(STR_ICC_PERMANENT_CHANGES),help=STRING_TOKEN(STR_ICC_PERMANENT_CHANGES_HELP),flags=INTERACTIVE,key=KEY_CHANGE_PERM; + SUPPRESS_GRAYOUT_ENDIF + + endform; + +#endif +//************************************************************************* +//************************************************************************* +//** ** +//** (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 diff --git a/Board/EM/MeWrapper/Icc/IccSetup/IccStrings.uni b/Board/EM/MeWrapper/Icc/IccSetup/IccStrings.uni Binary files differnew file mode 100644 index 0000000..29f0557 --- /dev/null +++ b/Board/EM/MeWrapper/Icc/IccSetup/IccStrings.uni |