summaryrefslogtreecommitdiff
path: root/Core/EM/TseDefaultBootOrder
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Core/EM/TseDefaultBootOrder
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Core/EM/TseDefaultBootOrder')
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.c208
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.chmbin0 -> 31698 bytes
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.cif12
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.h70
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.mak67
-rw-r--r--Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.sdl25
6 files changed, 382 insertions, 0 deletions
diff --git a/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.c b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.c
new file mode 100644
index 0000000..6938502
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.c
@@ -0,0 +1,208 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.c 6 1/03/13 10:51a Vyacheslava $
+//
+// $Revision: 6 $
+//
+// $Date: 1/03/13 10:51a $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.c $
+//
+// 6 1/03/13 10:51a Vyacheslava
+// Added modification to check for LOAD_OPTION_HIDDEN and ignore hidden
+// boot options in creating "DefaultBootOrder" variable.
+//
+// 5 10/15/12 10:31a Vyacheslava
+// [TAG] EIP103603
+// [Category] Bug Fix
+// [Severity] Critical
+// [Symptom] DefaultLegacyDevOrder is corrupted
+// [RootCause] SetDefaultTseBootOrder () corrupts the data which is not
+// the Boot Order.
+// [Solution] for( i = 0; i < (Order->Length / (sizeof (UINT16)) - 1);
+// i++ )
+// [Files] TseDefaultBootOrder.c
+//
+// 4 9/13/11 9:09a Vyacheslava
+//
+// 3 4/27/11 11:26a Vyacheslava
+// [TAG] EIP58592
+// [Category] Bug Fix
+// [Severity] Minor
+// [Symptom] Restore Defaults in the Setup will work incorrect after
+// second HDD has been disabled.
+//
+// 2 2/02/11 2:00p Vyacheslava
+// [TAG] EIP52313
+// [Category] New Feature
+//
+// 1 1/20/11 10:52a Felixp
+//
+// 6 1/13/10 2:13p Felixp
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TseDefaultBootOrder.c
+//
+// Description: This is main file of the TseDefaultBootOrder eModule.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+#include <BootOptions.h>
+#include "TseDefaultBootOrder.h"
+
+//----------------------------------------------------------------------------
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: CompareTagThenBbsIndex
+//
+// Description: This function returns result of compairing two DLINK tags.
+//
+// Input:
+// Link1 - pointer to the first tag for compare
+// Link1 - pointer to the second tag for compare
+//
+// Output: INT32 - result of comparing.
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+INT32 CompareTagThenBbsIndex( IN DLINK *Link1, IN DLINK *Link2 )
+{
+ BOOT_OPTION *Option1 = (BOOT_OPTION*)Link1;
+ BOOT_OPTION *Option2 = (BOOT_OPTION*)Link2;
+
+ // Compare Tags first
+ if (Option1->Tag < Option2->Tag)
+ return -1;
+ else if (Option1->Tag > Option2->Tag)
+ return 1;
+
+ // Compare by BBS index
+ if (Option1->BbsIndex < Option2->BbsIndex)
+ return -1;
+ else if (Option1->BbsIndex > Option2->BbsIndex)
+ return 1;
+
+ return 0;
+}
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: SetDefaultTseBootOrder
+//
+// Description:
+// This function sets variables: DefaultLegacyDevOrder and DefaultBootOrder.
+//
+// Input: VOID
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+VOID SetDefaultTseBootOrder(VOID)
+{
+ UINTN DevOrderSize;
+ LEGACY_DEVICE_ORDER *DevOrder;
+ UINTN BootOrderSize;
+ UINT16 *BootOrder;
+ UINT16 PreviousBootOptionNumber;
+ DLINK *Link;
+ UINTN BootOrderIndex;
+ BOOT_OPTION *Option;
+ EFI_GUID DefaultLegacyDevOrderGuid = DEFAULT_LEGACY_DEV_ORDER_VARIABLE_GUID;
+ EFI_GUID DefaultBootOrderGuid = DEFAULT_BOOT_ORDER_VARIABLE_GUID;
+ LEGACY_DEVICE_ORDER *Order;
+ UINTN i;
+
+ // PRECONDITION: All Boot Option Numbers are set
+ BootOrderSize = BootOptionList->Size * sizeof(UINT16);
+ if (BootOrderSize == 0)
+ return;
+
+ // Build DefaultLegacyDevOrder variable
+ SortList(BootOptionList, CompareTagThenBbsIndex);
+ BuildLegacyDevOrderBuffer(&DevOrder, &DevOrderSize);
+
+ // Remove disable mask from buffer DevOrder
+ for( Order = DevOrder; (UINT8*)Order < (UINT8*)DevOrder + DevOrderSize;
+ Order = (LEGACY_DEVICE_ORDER*)((UINT8*)Order + Order->Length + sizeof(Order->Type)) )
+ {
+ // The order length includes their own length
+ for( i = 0; i < (Order->Length / sizeof(UINT16) - 1); i++ )
+ Order->Device[i] &= 0x00FF;
+ }
+
+ // Store "DefaultLegacyDevOrder" EFI variable
+ pRS->SetVariable(
+ L"DefaultLegacyDevOrder",
+ &DefaultLegacyDevOrderGuid,
+ BOOT_VARIABLE_ATTRIBUTES,
+ DevOrderSize,
+ DevOrder
+ );
+ pBS->FreePool(DevOrder);
+
+ // Build DefaultBootOrder variable
+ BootOrder = Malloc(BootOrderSize);
+ PreviousBootOptionNumber = INVALID_BOOT_OPTION_NUMBER;
+ BootOrderIndex = 0;
+
+ // Set boot option number for each boot option
+ FOR_EACH_BOOT_OPTION(BootOptionList,Link,Option)
+ {
+ if ( (PreviousBootOptionNumber == Option->BootOptionNumber) ||
+ (Option->Attributes & LOAD_OPTION_HIDDEN) )
+ continue;
+ BootOrder[BootOrderIndex++] = Option->BootOptionNumber;
+ PreviousBootOptionNumber = Option->BootOptionNumber;
+ }
+
+ // Store "DefaultBootOrder" EFI variable
+ pRS->SetVariable(
+ L"DefaultBootOrder",
+ &DefaultBootOrderGuid,
+ BOOT_VARIABLE_ATTRIBUTES,
+ BootOrderIndex * sizeof(UINT16),
+ BootOrder
+ );
+ pBS->FreePool(BootOrder);
+}
+
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2011, 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/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.chm b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.chm
new file mode 100644
index 0000000..104b201
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.chm
Binary files differ
diff --git a/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.cif b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.cif
new file mode 100644
index 0000000..512d76a
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.cif
@@ -0,0 +1,12 @@
+<component>
+ name = "TseDefaultBootOrder"
+ category = eModule
+ LocalRoot = "Core\EM\TseDefaultBootOrder\"
+ RefName = "TseDefaultBootOrder"
+[files]
+"TseDefaultBootOrder.sdl"
+"TseDefaultBootOrder.mak"
+"TseDefaultBootOrder.c"
+"TseDefaultBootOrder.h"
+"TseDefaultBootOrder.chm"
+<endComponent>
diff --git a/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.h b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.h
new file mode 100644
index 0000000..172eff8
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.h
@@ -0,0 +1,70 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.h 2 2/02/11 2:12p Vyacheslava $
+//
+// $Revision: 2 $
+//
+// $Date: 2/02/11 2:12p $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.h $
+//
+// 2 2/02/11 2:12p Vyacheslava
+//
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TseDefaultBootOrder.h
+//
+// Description: Internal header file for TseDefaultBootOrder eModule.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+#ifndef __TseDefaultBootOrder__H__
+#define __TseDefaultBootOrder__H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DEFAULT_LEGACY_DEV_ORDER_VARIABLE_GUID \
+ { 0x3c4ead08, 0x45ae, 0x4315, 0x8d, 0x15, 0xa6, 0x0e, 0xaa, 0x8c, 0xaf, 0x69 }
+
+#define DEFAULT_BOOT_ORDER_VARIABLE_GUID \
+ { 0x45cf35f6, 0x0d6e, 0x4d04, 0x85, 0x6a, 0x03, 0x70, 0xa5, 0xb1, 0x6f, 0x53 }
+
+
+/****** DO NOT WRITE BELOW THIS LINE *******/
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.mak b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.mak
new file mode 100644
index 0000000..0e76376
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.mak
@@ -0,0 +1,67 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2011, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.mak 1 1/20/11 10:52a Felixp $
+#
+# $Revision: 1 $
+#
+# $Date: 1/20/11 10:52a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/BIN/Modules/BootOptionPolicies/TseDefaultBootOrder/TseDefaultBootOrder.mak $
+#
+# 1 1/20/11 10:52a Felixp
+#
+# 6 1/13/10 2:13p Felixp
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: TseDefaultBootOrder.mak
+#
+# Description:
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+
+CORE_DXEBin : $(BUILD_DIR)\TseDefaultBootOrder.lib
+
+$(BUILD_DIR)\TseDefaultBootOrder.lib : TseDefaultBootOrder
+
+TseDefaultBootOrder : $(BUILD_DIR)\TseDefaultBootOrder.mak TseDefaultBootOrderBin
+
+$(BUILD_DIR)\TseDefaultBootOrder.mak : $(TseDefaultBootOrder_DIR)\$(@B).cif $(TseDefaultBootOrder_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(TseDefaultBootOrder_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+TseDefaultBootOrderBin : $(AMIDXELIB)
+ $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
+ /f $(BUILD_DIR)\TseDefaultBootOrder.mak all\
+ "MY_INCLUDES=/I$(CORE_DXE_DIR)"\
+ TYPE=LIBRARY
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2011, 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/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.sdl b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.sdl
new file mode 100644
index 0000000..39187a3
--- /dev/null
+++ b/Core/EM/TseDefaultBootOrder/TseDefaultBootOrder.sdl
@@ -0,0 +1,25 @@
+TOKEN
+ Name = "TseDefaultBootOrder_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable TseDefaultBootOrder support in Project"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+PATH
+ Name = "TseDefaultBootOrder_DIR"
+End
+
+MODULE
+ Help = "Includes TseDefaultBootOrder.mak to Project"
+ File = "TseDefaultBootOrder.mak"
+End
+
+ELINK
+ Name = "SetDefaultTseBootOrder,"
+ Parent = "SaveLegacyDevOrder,"
+ InvokeOrder = AfterParent
+End
+