/** @file\r
\r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions\r
\r
\r
#include <FrameworkDxe.h>\r
+#include <IndustryStandard/Pci.h>\r
+#include <IndustryStandard/SmBios.h>\r
+#include <IndustryStandard/Acpi10.h>\r
\r
#include <Guid/SmBios.h>\r
#include <Guid/Acpi.h>\r
#include <Guid/DxeServices.h>\r
#include <Guid/LegacyBios.h>\r
#include <Guid/StatusCodeDataTypeId.h>\r
+#include <Guid/ImageAuthentication.h>\r
\r
#include <Protocol/BlockIo.h>\r
#include <Protocol/LoadedImage.h>\r
#include <Protocol/DevicePath.h>\r
#include <Protocol/Legacy8259.h>\r
#include <Protocol/PciRootBridgeIo.h>\r
+#include <Protocol/SerialIo.h>\r
+#include <Protocol/SuperIo.h>\r
\r
#include <Library/BaseLib.h>\r
#include <Library/DebugLib.h>\r
#define PROTECTED_MODE_BASE_VECTOR_MASTER 0x68\r
#define PROTECTED_MODE_BASE_VECTOR_SLAVE 0x70\r
\r
+//\r
+// When we call CSM16 functions, some CSM16 use es:[offset + 0xabcd] to get data passed from CSM32, \r
+// offset + 0xabcd could overflow which exceeds 0xFFFF which is invalid in real mode. \r
+// So this will keep offset as small as possible to avoid offset overflow in real mode. \r
+//\r
+#define NORMALIZE_EFI_SEGMENT(_Adr) (UINT16) (((UINTN) (_Adr)) >> 4)\r
+#define NORMALIZE_EFI_OFFSET(_Adr) (UINT16) (((UINT16) ((UINTN) (_Adr))) & 0xf)\r
+\r
//\r
// Trace defines\r
//\r
#define LEGACY_PCI_TRACE_00E LEGACY_PCI_TRACE + 0x0E\r
#define LEGACY_PCI_TRACE_00F LEGACY_PCI_TRACE + 0x0F\r
\r
+#define BDA_VIDEO_MODE 0x49\r
+\r
+#define IDE_PI_REGISTER_PNE BIT0\r
+#define IDE_PI_REGISTER_SNE BIT2\r
\r
typedef struct {\r
UINTN PciSegment;\r
\r
#endif\r
\r
-//\r
-// Miscellaneous numbers\r
-//\r
-#define PMM_MEMORY_SIZE 0x400000 // 4 MB\r
-\r
#pragma pack(1)\r
\r
//\r
EfiAcpiAddressRangeMemory = 1,\r
EfiAcpiAddressRangeReserved = 2,\r
EfiAcpiAddressRangeACPI = 3,\r
- EfiAcpiAddressRangeNVS = 4\r
+ EfiAcpiAddressRangeNVS = 4,\r
+ EfiAddressRangePersistentMemory = 7\r
} EFI_ACPI_MEMORY_TYPE;\r
\r
typedef struct {\r
\r
extern EFI_GENERIC_MEMORY_TEST_PROTOCOL *gGenMemoryTest;\r
\r
-extern UINTN mEndOpromShadowAddress;\r
-\r
#define PORT_70 0x70\r
#define PORT_71 0x71\r
\r
IN UINTN StackSize\r
);\r
\r
+/**\r
+ Load a legacy PC-AT OpROM for VGA controller.\r
+\r
+ @param Private Driver private data.\r
+\r
+ @retval EFI_SUCCESS Legacy ROM successfully installed for this device.\r
+ @retval EFI_DEVICE_ERROR No VGA device handle found, or native EFI video\r
+ driver cannot be successfully disconnected, or VGA\r
+ thunk driver cannot be successfully connected.\r
+\r
+**/\r
+EFI_STATUS\r
+LegacyBiosInstallVgaRom (\r
+ IN LEGACY_BIOS_INSTANCE *Private\r
+ );\r
+\r
#endif\r