summaryrefslogtreecommitdiff
path: root/Core/EM/CSM/CsmLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'Core/EM/CSM/CsmLib.c')
-rw-r--r--Core/EM/CSM/CsmLib.c56
1 files changed, 53 insertions, 3 deletions
diff --git a/Core/EM/CSM/CsmLib.c b/Core/EM/CSM/CsmLib.c
index d0605ae..5b20c79 100644
--- a/Core/EM/CSM/CsmLib.c
+++ b/Core/EM/CSM/CsmLib.c
@@ -13,17 +13,26 @@
//**********************************************************************
//****************************************************************************
-// $Header: /Alaska/SOURCE/Modules/CSM/Generic/Core/CsmLib.c 69 1/10/14 12:21p Olegi $
+// $Header: /Alaska/SOURCE/Modules/CSM/Generic/Core/CsmLib.c 71 9/09/15 9:53a Olegi $
//
-// $Revision: 69 $
+// $Revision: 71 $
//
-// $Date: 1/10/14 12:21p $
+// $Date: 9/09/15 9:53a $
//
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/SOURCE/Modules/CSM/Generic/Core/CsmLib.c $
//
+// 71 9/09/15 9:53a Olegi
+// [TAG] EIP237381
+// [Description] Aptio 4 CSM: add INT19 TRAP setup question
+//
+// 70 9/08/15 2:47p Olegi
+// [TAG] EIP237205
+// [Description] Aptio4 CSM: Add Lock/Unlock console calls during Option
+// ROMs execution
+//
// 69 1/10/14 12:21p Olegi
// EIP149769: LegacyToEfi boot management
// Changed default setting, added new token to extend the functionality
@@ -324,6 +333,7 @@
#include "pci.h"
#include <Protocol/SerialIo.h>
#include <Protocol/AmiBoardInfo.h>
+#include <Protocol/ConsoleControl.h>
extern BIOS_INFO *CoreBiosInfo;
extern UINTN gMaxOpRomAddress;
@@ -334,8 +344,12 @@ UINTN EmbeddedRomSize;
VOID UpdateEbdaMap(UINT32);
extern AMI_BOARD_INFO_PROTOCOL *gAmiBoardInfo;
+extern BOOLEAN gDoNotUpdateBbsTable;
extern BOOLEAN gBbsUpdateInProgress;
+EFI_CONSOLE_CONTROL_PROTOCOL *gConsoleControl = NULL;
+BOOLEAN gConsoleLocked = FALSE;
+
BOOLEAN
Check30ROM(
IN VOID *RomLocation,
@@ -1173,6 +1187,7 @@ AddBbsEntry (
IN BBS_TABLE *BbsEntry
)
{
+ if (gDoNotUpdateBbsTable) return EFI_ACCESS_DENIED;
if (gBbsUpdateInProgress) return EFI_NOT_READY;
gBbsUpdateInProgress = TRUE;
@@ -1216,6 +1231,7 @@ InsertBbsEntryAt (
{
UINT8 EntryNo;
+ if (gDoNotUpdateBbsTable) return EFI_ACCESS_DENIED;
if (gBbsUpdateInProgress) return EFI_NOT_READY;
if (EntryNumber == NULL) return EFI_INVALID_PARAMETER;
@@ -1282,6 +1298,7 @@ RemoveBbsEntryAt (
{
EFI_STATUS Status = EFI_SUCCESS;
+ if (gDoNotUpdateBbsTable) return EFI_ACCESS_DENIED;
if (gBbsUpdateInProgress) return EFI_NOT_READY;
gBbsUpdateInProgress = TRUE;
@@ -1367,6 +1384,39 @@ VOID ConnectSerialIO()
}
+EFI_STATUS LockConsole()
+{
+ EFI_STATUS Status;
+
+ if (gConsoleControl == NULL)
+ {
+ Status = pBS->LocateProtocol(&gEfiConsoleControlProtocolGuid, NULL, &gConsoleControl);
+ }
+ ASSERT_EFI_ERROR(Status);
+ if (EFI_ERROR(Status)) return Status;
+ if (gConsoleLocked) return EFI_NO_RESPONSE;
+
+ Status = gConsoleControl->LockStdIn(gConsoleControl, L"");
+ if (!EFI_ERROR(Status))
+ {
+ gConsoleLocked = TRUE;
+ }
+ return Status;
+}
+
+EFI_STATUS UnlockConsole()
+{
+ EFI_STATUS Status;
+
+ if (gConsoleControl == NULL) return EFI_NOT_FOUND;
+ if (gConsoleLocked == FALSE) return EFI_NO_RESPONSE;
+ Status = gConsoleControl->LockStdIn(gConsoleControl, L"");
+ if (!EFI_ERROR(Status))
+ {
+ gConsoleLocked = FALSE;
+ }
+ return Status;
+}
//<AMI_PHDR_START>
//---------------------------------------------------------------------------