]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBiosInterface.h
IntelFrameworkModulePkg: Clean up source files
[mirror_edk2.git] / IntelFrameworkModulePkg / Csm / LegacyBiosDxe / LegacyBiosInterface.h
index 8ab26fe3262515a9b6fef292133a9fda92793e59..497a71190f27c7dfdb525807895b089948e0e2a4 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
 /** @file\r
 \r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2018, 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
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions\r
@@ -18,12 +18,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 \r
 #include <FrameworkDxe.h>\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
 \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
 \r
 #include <Protocol/BlockIo.h>\r
 #include <Protocol/LoadedImage.h>\r
@@ -41,6 +45,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/DevicePath.h>\r
 #include <Protocol/Legacy8259.h>\r
 #include <Protocol/PciRootBridgeIo.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
+#include <Protocol/IoMmu.h>\r
 \r
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
 \r
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
@@ -93,6 +100,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define PROTECTED_MODE_BASE_VECTOR_MASTER  0x68\r
 #define PROTECTED_MODE_BASE_VECTOR_SLAVE   0x70\r
 \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
 //\r
 // Trace defines\r
 //\r
@@ -123,6 +138,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define LEGACY_PCI_TRACE_00E LEGACY_PCI_TRACE + 0x0E\r
 #define LEGACY_PCI_TRACE_00F LEGACY_PCI_TRACE + 0x0F\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
 typedef struct {\r
   UINTN   PciSegment;\r
@@ -158,11 +177,6 @@ typedef struct {
 \r
 #endif\r
 \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
 #pragma pack(1)\r
 \r
 //\r
@@ -471,7 +485,8 @@ typedef enum {
   EfiAcpiAddressRangeMemory   = 1,\r
   EfiAcpiAddressRangeReserved = 2,\r
   EfiAcpiAddressRangeACPI     = 3,\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
 } EFI_ACPI_MEMORY_TYPE;\r
 \r
 typedef struct {\r
@@ -494,7 +509,7 @@ extern BBS_TABLE           *mBbsTable;
 \r
 extern EFI_GENERIC_MEMORY_TEST_PROTOCOL *gGenMemoryTest;\r
 \r
 \r
 extern EFI_GENERIC_MEMORY_TEST_PROTOCOL *gGenMemoryTest;\r
 \r
-extern UINTN               mEndOpromShadowAddress;\r
+extern BOOLEAN mEndOfDxe;\r
 \r
 #define PORT_70 0x70\r
 #define PORT_71 0x71\r
 \r
 #define PORT_70 0x70\r
 #define PORT_71 0x71\r
@@ -529,7 +544,7 @@ extern UINTN               mEndOpromShadowAddress;
 //\r
 // Timer 0, Read/Write LSB then MSB, Square wave output, binary count use.\r
 //\r
 //\r
 // Timer 0, Read/Write LSB then MSB, Square wave output, binary count use.\r
 //\r
-#define TIMER0_CONTROL_WORD         0x36      \r
+#define TIMER0_CONTROL_WORD         0x36\r
 \r
 #define LEGACY_BIOS_INSTANCE_SIGNATURE  SIGNATURE_32 ('L', 'B', 'I', 'T')\r
 typedef struct {\r
 \r
 #define LEGACY_BIOS_INSTANCE_SIGNATURE  SIGNATURE_32 ('L', 'B', 'I', 'T')\r
 typedef struct {\r
@@ -541,16 +556,16 @@ typedef struct {
   EFI_HANDLE                        ImageHandle;\r
 \r
   //\r
   EFI_HANDLE                        ImageHandle;\r
 \r
   //\r
-  // CPU Architectural Protocol \r
+  // CPU Architectural Protocol\r
   //\r
   EFI_CPU_ARCH_PROTOCOL             *Cpu;\r
 \r
   //\r
   //\r
   EFI_CPU_ARCH_PROTOCOL             *Cpu;\r
 \r
   //\r
-  // Timer Architectural Protocol \r
+  // Timer Architectural Protocol\r
   //\r
   EFI_TIMER_ARCH_PROTOCOL           *Timer;\r
   //\r
   EFI_TIMER_ARCH_PROTOCOL           *Timer;\r
-  BOOLEAN                           TimerUses8254; \r
-  \r
+  BOOLEAN                           TimerUses8254;\r
+\r
   //\r
   // Protocol to Lock and Unlock 0xc0000 - 0xfffff\r
   //\r
   //\r
   // Protocol to Lock and Unlock 0xc0000 - 0xfffff\r
   //\r
@@ -562,7 +577,7 @@ typedef struct {
   // Interrupt control for thunk and PCI IRQ\r
   //\r
   EFI_LEGACY_8259_PROTOCOL          *Legacy8259;\r
   // Interrupt control for thunk and PCI IRQ\r
   //\r
   EFI_LEGACY_8259_PROTOCOL          *Legacy8259;\r
-  \r
+\r
   //\r
   // PCI Interrupt PIRQ control\r
   //\r
   //\r
   // PCI Interrupt PIRQ control\r
   //\r
@@ -658,7 +673,7 @@ typedef struct {
   //\r
   // Indicate that whether GenericLegacyBoot is entered or not\r
   //\r
   //\r
   // Indicate that whether GenericLegacyBoot is entered or not\r
   //\r
-  BOOLEAN                           LegacyBootEntered;                              \r
+  BOOLEAN                           LegacyBootEntered;\r
 \r
   //\r
   // CSM16 PCI Interface Version\r
 \r
   //\r
   // CSM16 PCI Interface Version\r
@@ -814,7 +829,7 @@ LegacyBiosFarCall86 (
   @param  RomSize                Size of ROM Image\r
   @param  Flags                  Indicates if ROM found and if PC-AT.\r
 \r
   @param  RomSize                Size of ROM Image\r
   @param  Flags                  Indicates if ROM found and if PC-AT.\r
 \r
-  @retval EFI_SUCCESS            Legacy Option ROM availible for this device\r
+  @retval EFI_SUCCESS            Legacy Option ROM available for this device\r
   @retval EFI_UNSUPPORTED        Legacy Option ROM not supported.\r
 \r
 **/\r
   @retval EFI_UNSUPPORTED        Legacy Option ROM not supported.\r
 \r
 **/\r
@@ -1246,10 +1261,10 @@ GenerateSoftInit (
   );\r
 \r
 /**\r
   );\r
 \r
 /**\r
-  Do an AllocatePages () of type AllocateMaxAddress for EfiBootServicesCode\r
-  memory.\r
+  Allocate memory for legacy usage.\r
 \r
 \r
-  @param  AllocateType               Allocated Legacy Memory Type\r
+  @param  AllocateType               The type of allocation to perform.\r
+  @param  MemoryType                 The type of memory to allocate.\r
   @param  StartPageAddress           Start address of range\r
   @param  Pages                      Number of pages to allocate\r
   @param  Result                     Result of allocation\r
   @param  StartPageAddress           Start address of range\r
   @param  Pages                      Number of pages to allocate\r
   @param  Result                     Result of allocation\r
@@ -1261,6 +1276,7 @@ GenerateSoftInit (
 EFI_STATUS\r
 AllocateLegacyMemory (\r
   IN  EFI_ALLOCATE_TYPE         AllocateType,\r
 EFI_STATUS\r
 AllocateLegacyMemory (\r
   IN  EFI_ALLOCATE_TYPE         AllocateType,\r
+  IN  EFI_MEMORY_TYPE           MemoryType,\r
   IN  EFI_PHYSICAL_ADDRESS      StartPageAddress,\r
   IN  UINTN                     Pages,\r
   OUT EFI_PHYSICAL_ADDRESS      *Result\r
   IN  EFI_PHYSICAL_ADDRESS      StartPageAddress,\r
   IN  UINTN                     Pages,\r
   OUT EFI_PHYSICAL_ADDRESS      *Result\r
@@ -1334,7 +1350,7 @@ ShadowAndStartLegacy16 (
 \r
 /**\r
   Checks the state of the floppy and if media is inserted.\r
 \r
 /**\r
   Checks the state of the floppy and if media is inserted.\r
-  \r
+\r
   This routine checks the state of the floppy and if media is inserted.\r
   There are 3 cases:\r
   No floppy present         - Set BBS entry to ignore\r
   This routine checks the state of the floppy and if media is inserted.\r
   There are 3 cases:\r
   No floppy present         - Set BBS entry to ignore\r
@@ -1451,7 +1467,7 @@ LegacyCalculateWriteStandardCmosChecksum (
   @param[out] OpromRevision          Revision of the PCI Rom\r
   @param[out] ConfigUtilityCodeHeaderPointer of Configuration Utility Code Header\r
 \r
   @param[out] OpromRevision          Revision of the PCI Rom\r
   @param[out] ConfigUtilityCodeHeaderPointer of Configuration Utility Code Header\r
 \r
-  @return EFI_SUCCESS            Legacy Option ROM availible for this device\r
+  @return EFI_SUCCESS            Legacy Option ROM available for this device\r
   @return EFI_ALREADY_STARTED    This device is already managed by its Oprom\r
   @return EFI_UNSUPPORTED        Legacy Option ROM not supported.\r
 \r
   @return EFI_ALREADY_STARTED    This device is already managed by its Oprom\r
   @return EFI_UNSUPPORTED        Legacy Option ROM not supported.\r
 \r
@@ -1513,4 +1529,20 @@ InternalLegacyBiosFarCall (
   IN  UINTN                           StackSize\r
   );\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
 #endif\r