]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/DxeIpl/LegacyTable.c
DuetPkg: Remove DuetPkg
[mirror_edk2.git] / DuetPkg / DxeIpl / LegacyTable.c
diff --git a/DuetPkg/DxeIpl/LegacyTable.c b/DuetPkg/DxeIpl/LegacyTable.c
deleted file mode 100644 (file)
index 1c822f8..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-/** @file\r
-\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-Module Name:\r
-  LegacyTable.c\r
-\r
-Abstract:\r
-\r
-Revision History:\r
-\r
-**/\r
-\r
-#include "DxeIpl.h"\r
-#include "HobGeneration.h"\r
-#include "Debug.h"\r
-\r
-#define MPS_PTR           SIGNATURE_32('_','M','P','_')\r
-#define SMBIOS_PTR        SIGNATURE_32('_','S','M','_')\r
-\r
-#define EBDA_BASE_ADDRESS 0x40E\r
-\r
-VOID *\r
-FindAcpiRsdPtr (\r
-  VOID\r
-  )\r
-{\r
-  UINTN                           Address;\r
-  UINTN                           Index;\r
-\r
-  //\r
-  // First Seach 0x0e0000 - 0x0fffff for RSD Ptr\r
-  //\r
-  for (Address = 0xe0000; Address < 0xfffff; Address += 0x10) {\r
-    if (*(UINT64 *)(Address) == EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE) {\r
-      return (VOID *)Address;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Search EBDA\r
-  //\r
-\r
-  Address = (*(UINT16 *)(UINTN)(EBDA_BASE_ADDRESS)) << 4;\r
-  for (Index = 0; Index < 0x400 ; Index += 16) {\r
-    if (*(UINT64 *)(Address + Index) == EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE) {\r
-      return (VOID *)Address;\r
-    }\r
-  }\r
-  return NULL;\r
-}\r
-\r
-VOID *\r
-FindSMBIOSPtr (\r
-  VOID\r
-  )\r
-{\r
-  UINTN                           Address;\r
-\r
-  //\r
-  // First Seach 0x0f0000 - 0x0fffff for SMBIOS Ptr\r
-  //\r
-  for (Address = 0xf0000; Address < 0xfffff; Address += 0x10) {\r
-    if (*(UINT32 *)(Address) == SMBIOS_PTR) {\r
-      return (VOID *)Address;\r
-    }\r
-  }\r
-  return NULL;\r
-}\r
-\r
-VOID *\r
-FindMPSPtr (\r
-  VOID\r
-  )\r
-{\r
-  UINTN                           Address;\r
-  UINTN                           Index;\r
-\r
-  //\r
-  // First Seach 0x0e0000 - 0x0fffff for MPS Ptr\r
-  //\r
-  for (Address = 0xe0000; Address < 0xfffff; Address += 0x10) {\r
-    if (*(UINT32 *)(Address) == MPS_PTR) {\r
-      return (VOID *)Address;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Search EBDA\r
-  //\r
-\r
-  Address = (*(UINT16 *)(UINTN)(EBDA_BASE_ADDRESS)) << 4;\r
-  for (Index = 0; Index < 0x400 ; Index += 16) {\r
-    if (*(UINT32 *)(Address + Index) == MPS_PTR) {\r
-      return (VOID *)Address;\r
-    }\r
-  }\r
-  return NULL;\r
-}\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER  Header;\r
-  UINT32                       Entry;\r
-} RSDT_TABLE;\r
-\r
-typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER  Header;\r
-  UINT64                       Entry;\r
-} XSDT_TABLE;\r
-\r
-#pragma pack()\r
-\r
-VOID\r
-ScanTableInRSDT (\r
-  RSDT_TABLE                   *Rsdt,\r
-  UINT32                       Signature,\r
-  EFI_ACPI_DESCRIPTION_HEADER  **FoundTable\r
-  )\r
-{\r
-  UINTN                         Index;\r
-  UINT32                        EntryCount;\r
-  UINT32                        *EntryPtr;\r
-  EFI_ACPI_DESCRIPTION_HEADER   *Table;\r
-  \r
-  *FoundTable = NULL;\r
-  \r
-  EntryCount = (Rsdt->Header.Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / sizeof(UINT32);\r
-  \r
-  EntryPtr = &Rsdt->Entry;\r
-  for (Index = 0; Index < EntryCount; Index ++, EntryPtr ++) {\r
-    Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(*EntryPtr));\r
-    if (Table->Signature == Signature) {\r
-      *FoundTable = Table;\r
-      break;\r
-    }\r
-  }\r
-  \r
-  return;\r
-}\r
-\r
-VOID\r
-ScanTableInXSDT (\r
-  XSDT_TABLE                   *Xsdt,\r
-  UINT32                       Signature,\r
-  EFI_ACPI_DESCRIPTION_HEADER  **FoundTable\r
-  )\r
-{\r
-  UINTN                        Index;\r
-  UINT32                       EntryCount;\r
-  UINT64                       EntryPtr;\r
-  UINTN                        BasePtr;\r
-  EFI_ACPI_DESCRIPTION_HEADER  *Table;\r
-  \r
-  *FoundTable = NULL;\r
-  \r
-  EntryCount = (Xsdt->Header.Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / sizeof(UINT64);\r
-  \r
-  BasePtr = (UINTN)(&(Xsdt->Entry));\r
-  for (Index = 0; Index < EntryCount; Index ++) {\r
-    CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * sizeof(UINT64)), sizeof(UINT64));\r
-    Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(EntryPtr));\r
-    if (Table->Signature == Signature) {\r
-      *FoundTable = Table;\r
-      break;\r
-    }\r
-  }\r
-  \r
-  return;\r
-}\r
-\r
-VOID *\r
-FindAcpiPtr (\r
-  IN HOB_TEMPLATE  *Hob,\r
-  UINT32           Signature\r
-  )\r
-{\r
-  EFI_ACPI_DESCRIPTION_HEADER                    *AcpiTable;\r
-  EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER   *Rsdp;\r
-  RSDT_TABLE                                     *Rsdt;\r
-  XSDT_TABLE                                     *Xsdt;\r
\r
-  AcpiTable = NULL;\r
-\r
-  //\r
-  // Check ACPI2.0 table\r
-  //\r
-  if ((int)Hob->Acpi20.Table != -1) {\r
-    Rsdp = (EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)(UINTN)Hob->Acpi20.Table;\r
-    Rsdt = (RSDT_TABLE *)(UINTN)Rsdp->RsdtAddress;\r
-    Xsdt = NULL;\r
-    if ((Rsdp->Revision >= 2) && (Rsdp->XsdtAddress < (UINT64)(UINTN)-1)) {\r
-      Xsdt = (XSDT_TABLE *)(UINTN)Rsdp->XsdtAddress;\r
-    }\r
-    //\r
-    // Check Xsdt\r
-    //\r
-    if (Xsdt != NULL) {\r
-      ScanTableInXSDT (Xsdt, Signature, &AcpiTable);\r
-    }\r
-    //\r
-    // Check Rsdt\r
-    //\r
-    if ((AcpiTable == NULL) && (Rsdt != NULL)) {\r
-      ScanTableInRSDT (Rsdt, Signature, &AcpiTable);\r
-    }\r
-  }\r
-  \r
-  //\r
-  // Check ACPI1.0 table\r
-  //\r
-  if ((AcpiTable == NULL) && ((int)Hob->Acpi.Table != -1)) {\r
-    Rsdp = (EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)(UINTN)Hob->Acpi.Table;\r
-    Rsdt = (RSDT_TABLE *)(UINTN)Rsdp->RsdtAddress;\r
-    //\r
-    // Check Rsdt\r
-    //\r
-    if (Rsdt != NULL) {\r
-      ScanTableInRSDT (Rsdt, Signature, &AcpiTable);\r
-    }\r
-  }\r
-\r
-  return AcpiTable;\r
-}\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
-  UINT64  BaseAddress;\r
-  UINT16  PciSegmentGroupNumber;\r
-  UINT8   StartBusNumber;\r
-  UINT8   EndBusNumber;\r
-  UINT32  Reserved;\r
-} MCFG_STRUCTURE;\r
-#pragma pack()\r
-\r
-VOID\r
-PrepareMcfgTable (\r
-  IN HOB_TEMPLATE  *Hob\r
-  )\r
-{\r
-  EFI_ACPI_DESCRIPTION_HEADER  *McfgTable;\r
-  MCFG_STRUCTURE               *Mcfg;\r
-  UINTN                        McfgCount;\r
-  UINTN                        Index;\r
-\r
-  McfgTable = FindAcpiPtr (Hob, EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE);\r
-  if (McfgTable == NULL) {\r
-    return ;\r
-  }\r
-\r
-  Mcfg = (MCFG_STRUCTURE *)((UINTN)McfgTable + sizeof(EFI_ACPI_DESCRIPTION_HEADER) + sizeof(UINT64));\r
-  McfgCount = (McfgTable->Length - sizeof(EFI_ACPI_DESCRIPTION_HEADER) - sizeof(UINT64)) / sizeof(MCFG_STRUCTURE);\r
-\r
-  //\r
-  // Fill PciExpress info on Hob\r
-  // Note: Only for 1st segment\r
-  //\r
-  for (Index = 0; Index < McfgCount; Index++) {\r
-    if (Mcfg[Index].PciSegmentGroupNumber == 0) {\r
-      Hob->PciExpress.PciExpressBaseAddressInfo.PciExpressBaseAddress = Mcfg[Index].BaseAddress;\r
-      break;\r
-    }\r
-  }\r
-\r
-  return ;\r
-}\r
-\r
-VOID\r
-PrepareFadtTable (\r
-  IN HOB_TEMPLATE  *Hob\r
-  )\r
-{\r
-  EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE   *Fadt;\r
-  EFI_ACPI_DESCRIPTION                        *AcpiDescription;\r
-\r
-  Fadt = FindAcpiPtr (Hob, EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE);\r
-  if (Fadt == NULL) {\r
-    return ;\r
-  }\r
-\r
-  AcpiDescription = &Hob->AcpiInfo.AcpiDescription;\r
-  //\r
-  // Fill AcpiDescription according to FADT\r
-  // Currently, only for PM_TMR\r
-  //\r
-  AcpiDescription->PM_TMR_LEN = Fadt->PmTmrLen;\r
-  AcpiDescription->TMR_VAL_EXT = (UINT8)((Fadt->Flags & 0x100) != 0);\r
\r
-  //\r
-  // For fields not included in ACPI 1.0 spec, we get the value based on table length\r
-  //\r
-  if (Fadt->Header.Length >= OFFSET_OF (EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE, XPmTmrBlk) + sizeof (Fadt->XPmTmrBlk)) {\r
-    CopyMem (\r
-      &AcpiDescription->PM_TMR_BLK,\r
-      &Fadt->XPmTmrBlk,\r
-      sizeof(EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE)\r
-      );\r
-  }\r
-  if (Fadt->Header.Length >= OFFSET_OF (EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE, ResetValue) + sizeof (Fadt->ResetValue)) {\r
-    CopyMem (\r
-      &AcpiDescription->RESET_REG,\r
-      &Fadt->ResetReg,\r
-      sizeof(EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE)\r
-      );\r
-    AcpiDescription->RESET_VALUE = Fadt->ResetValue;\r
-  }\r
-\r
-  if (AcpiDescription->PM_TMR_BLK.Address == 0) {\r
-    AcpiDescription->PM_TMR_BLK.Address          = Fadt->PmTmrBlk;\r
-    AcpiDescription->PM_TMR_BLK.AddressSpaceId   = EFI_ACPI_3_0_SYSTEM_IO;\r
-  }\r
-\r
-  //\r
-  // It's possible that the PM_TMR_BLK.RegisterBitWidth is always 32,\r
-  //  we need to set the correct RegisterBitWidth value according to the TMR_VAL_EXT\r
-  //  A zero indicates TMR_VAL is implemented as a 24-bit value. \r
-  //  A one indicates TMR_VAL is implemented as a 32-bit value\r
-  //\r
-  AcpiDescription->PM_TMR_BLK.RegisterBitWidth = (UINT8) ((AcpiDescription->TMR_VAL_EXT == 0) ? 24 : 32);\r
-  \r
-\r
-  return ;\r
-}\r
-\r
-VOID\r
-PrepareHobLegacyTable (\r
-  IN HOB_TEMPLATE  *Hob\r
-  )\r
-{\r
-  CHAR8    PrintBuffer[256];\r
-\r
-  Hob->Acpi.Table   = (EFI_PHYSICAL_ADDRESS)(UINTN)FindAcpiRsdPtr ();\r
-  AsciiSPrint (PrintBuffer, 256, "\nAcpiTable=0x%x ", (UINT32)(UINTN)Hob->Acpi.Table);\r
-  PrintString (PrintBuffer);\r
-  Hob->Acpi20.Table = (EFI_PHYSICAL_ADDRESS)(UINTN)FindAcpiRsdPtr ();\r
-  Hob->Smbios.Table = (EFI_PHYSICAL_ADDRESS)(UINTN)FindSMBIOSPtr ();\r
-  AsciiSPrint (PrintBuffer, 256, "SMBIOS Table=0x%x ", (UINT32)(UINTN)Hob->Smbios.Table);\r
-  PrintString (PrintBuffer);\r
-  Hob->Mps.Table    = (EFI_PHYSICAL_ADDRESS)(UINTN)FindMPSPtr ();\r
-  AsciiSPrint (PrintBuffer, 256, "MPS Table=0x%x\n", (UINT32)(UINTN)Hob->Mps.Table);\r
-  PrintString (PrintBuffer);\r
-\r
-  PrepareMcfgTable (Hob);\r
-\r
-  PrepareFadtTable (Hob);\r
-\r
-  return ;\r
-}\r
-\r