diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/BdsLinuxFdt.c b/Platforms/AMD/Styx/Drivers/FdtDxe/BdsLinuxFdt.c
deleted file mode 100644
index aa595045ca3c..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/BdsLinuxFdt.c
+++ /dev/null
@@ -1,760 +0,0 @@
-/** @file
-*
-*  Copyright (c) 2011-2014, ARM Limited. All rights reserved.<BR>
-*  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.<BR>
-*
-*  This program and the accompanying materials
-*  are licensed and made available under the terms and conditions of the BSD License
-*  which accompanies this distribution.  The full text of the license may be found at
-*  http://opensource.org/licenses/bsd-license.php
-*
-*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*
-**/
-/**
-
-  Derived from:
-   ArmPkg/Library/BdsLib/BdsLinuxFdt.c
-
-**/
-
-#include <Library/PcdLib.h>
-#include <libfdt.h>
-
-#include <Library/BdsLib/BdsInternal.h>
-
-#include <Guid/ArmMpCoreInfo.h>
-#include <Protocol/AmdMpCoreInfo.h>
-
-#define LINUX_FDT_MAX_OFFSET      (PcdGet64 (PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxFdtMaxOffset))
-
-
-// Additional size that could be used for FDT entries added by the UEFI OS Loader
-// Estimation based on: EDID (300bytes) + bootargs (200bytes) + initrd region (20bytes)
-//                      + system memory region (20bytes) + mp_core entries (200 bytes)
-#define FDT_ADDITIONAL_ENTRIES_SIZE     0x300
-
-
-EFI_STATUS
-GetSystemMemoryResources (
-  IN  LIST_ENTRY *ResourceList
-  );
-
-VOID
-DebugDumpFdt (
-  IN VOID*                FdtBlob
-  );
-
-#define ALIGN(x, a)     (((x) + ((a) - 1)) & ~((a) - 1))
-#define PALIGN(p, a)    ((void *)(ALIGN((unsigned long)(p), (a))))
-#define GET_CELL(p)     (p += 4, *((const UINT32 *)(p-4)))
-
-//
-// PMU interrupts per core
-//
-#pragma pack(push, 1)
-typedef struct {
-  UINT32 Flag;          // 0 == SPI
-  UINT32 IntId;         // GSIV == IntId+32
-  UINT32 Type;          // 4 == Level-Sensitive, Active-High
-} PMU_INTERRUPT;
-#pragma pack(pop)
-
-#define PMU_INT_FLAG_SPI        0
-#define PMU_INT_TYPE_HIGH_LEVEL 4
-
-
-typedef struct {
-  UINTN   Base;
-  UINTN   Size;
-} FdtRegion;
-
-
-STATIC
-UINTN
-cpu_to_fdtn (UINTN x) {
-  if (sizeof (UINTN) == sizeof (UINT32)) {
-    return cpu_to_fdt32 (x);
-  } else {
-    return cpu_to_fdt64 (x);
-  }
-}
-
-
-STATIC
-BOOLEAN
-ClusterInRange(
-  IN ARM_CORE_INFO *ArmCoreInfoTable,
-  IN UINTN         ClusterId,
-  IN UINTN         LowIndex,
-  IN UINTN         HighIndex
-  )
-{
-  do {
-    if (ClusterId == ArmCoreInfoTable[LowIndex].ClusterId)
-      return TRUE;
-  } while (++LowIndex <= HighIndex);
-
-  return FALSE;
-}
-
-
-STATIC
-UINTN
-NumberOfCoresInCluster(
-  IN ARM_CORE_INFO *ArmCoreInfoTable,
-  IN UINTN         NumberOfEntries,
-  IN UINTN         ClusterId
-  )
-{
-  UINTN Index, Cores;
-
-  Cores = 0;
-  for (Index = 0; Index < NumberOfEntries; ++Index) {
-    if (ClusterId == ArmCoreInfoTable[Index].ClusterId)
-      ++Cores;
-  }
-
-  return Cores;
-}
-
-
-STATIC
-UINTN
-NumberOfClustersInTable(
-  IN ARM_CORE_INFO *ArmCoreInfoTable,
-  IN UINTN         NumberOfEntries
-  )
-{
-  UINTN Index, Cores, Clusters, ClusterId;
-
-  Index = 0;
-  Clusters = 0;
-  Cores = NumberOfEntries;
-  while (Cores) {
-     ++Clusters;
-     ClusterId = ArmCoreInfoTable[Index].ClusterId;
-     Cores -= NumberOfCoresInCluster (ArmCoreInfoTable,
-                                      NumberOfEntries,
-                                      ClusterId);
-     if (Cores) {
-       do {
-         ++Index;
-       } while (ClusterInRange (ArmCoreInfoTable,
-                                ArmCoreInfoTable[Index].ClusterId,
-                                0, Index-1));
-     }
-  }
-
-  return Clusters;
-}
-
-
-STATIC
-int
-fdt_alloc_phandle(
-  IN VOID *blob
-  )
-{
-
-  int offset, phandle = 0;
-
-  for (offset = fdt_next_node(blob, -1, NULL); offset >= 0;
-       offset = fdt_next_node(blob, offset, NULL)) {
-       phandle = MAX(phandle, fdt_get_phandle(blob, offset));
-  }
-
-  return phandle + 1;
-}
-
-
-STATIC
-BOOLEAN
-IsLinuxReservedRegion (
-  IN EFI_MEMORY_TYPE MemoryType
-  )
-{
-  switch(MemoryType) {
-  case EfiRuntimeServicesCode:
-  case EfiRuntimeServicesData:
-  case EfiUnusableMemory:
-  case EfiACPIReclaimMemory:
-  case EfiACPIMemoryNVS:
-  case EfiReservedMemoryType:
-    return TRUE;
-  default:
-    return FALSE;
-  }
-}
-
-STATIC
-VOID
-SetDeviceStatus (
-  IN VOID *fdt,
-  IN CHAR8 *device,
-  IN BOOLEAN enable
-  )
-{
-  int node, subnode, rc;
-
-  node = fdt_subnode_offset (fdt, 0, "smb");
-  if (node >= 0) {
-    subnode = fdt_subnode_offset (fdt, node, device);
-    if (subnode >= 0) {
-      rc = fdt_setprop_string(fdt, subnode, "status", enable ? "ok" : "disabled");
-      if (rc) {
-        DEBUG((EFI_D_ERROR,"%a: Could not set 'status' property for '%a' node\n",
-            __FUNCTION__, device));
-      }
-    }
-  }
-}
-
-#if DO_XGBE
-STATIC
-VOID
-SetMacAddress (
-  IN VOID *fdt,
-  IN CHAR8 *device,
-  IN UINT64 mac_addr
-  )
-{
-  int node, subnode, rc;
-
-  node = fdt_subnode_offset (fdt, 0, "smb");
-  if (node >= 0) {
-    subnode = fdt_subnode_offset (fdt, node, device);
-    if (subnode >= 0) {
-      rc = fdt_setprop(fdt, subnode, "mac-address", (void *)&mac_addr, 6);
-      if (rc) {
-        DEBUG((EFI_D_ERROR,"%a: Could not set 'mac-address' property for '%a' node\n",
-            __FUNCTION__, device));
-      }
-    }
-  }
-}
-#endif
-
-VOID
-SetSocIdStatus (
-  IN VOID *fdt
-  )
-{
-  UINT32                SocId;
-  BOOLEAN               IsRevB1;
-
-  SocId = PcdGet32 (PcdSocCpuId);
-  IsRevB1 = (SocId & 0xFF0) && (SocId & 0x00F);
-
-  SetDeviceStatus (fdt, "sata@e0d00000",
-    IsRevB1 && FixedPcdGet8(PcdSata1PortCount) > 0);
-  SetDeviceStatus (fdt, "gpio@e0020000", IsRevB1);
-  SetDeviceStatus (fdt, "gpio@e0030000", IsRevB1);
-  SetDeviceStatus (fdt, "gwdt@e0bb0000", IsRevB1);
-#if DO_KCS
-  SetDeviceStatus (fdt, "kcs@e0010000", IsRevB1);
-#else
-  SetDeviceStatus (fdt, "kcs@e0010000", FALSE);
-#endif
-}
-
-VOID
-SetXgbeStatus (
-  IN VOID *fdt
-  )
-{
-#if DO_XGBE
-  SetDeviceStatus (fdt, "xgmac@e0700000", TRUE);
-  SetDeviceStatus (fdt, "phy@e1240800", TRUE);
-  SetDeviceStatus (fdt, "xgmac@e0900000", TRUE);
-  SetDeviceStatus (fdt, "phy@e1240c00", TRUE);
-
-  SetMacAddress (fdt, "xgmac@e0700000", PcdGet64 (PcdEthMacA));
-  SetMacAddress (fdt, "xgmac@e0900000", PcdGet64 (PcdEthMacB));
-#else
-  SetDeviceStatus (fdt, "xgmac@e0700000", FALSE);
-  SetDeviceStatus (fdt, "phy@e1240800", FALSE);
-  SetDeviceStatus (fdt, "xgmac@e0900000", FALSE);
-  SetDeviceStatus (fdt, "phy@e1240c00", FALSE);
-#endif
-}
-
-
-/**
-** Relocate the FDT blob to a more appropriate location for the Linux kernel.
-** This function will allocate memory for the relocated FDT blob.
-**
-** @retval EFI_SUCCESS on success.
-** @retval EFI_OUT_OF_RESOURCES or EFI_INVALID_PARAMETER on failure.
-*/
-STATIC
-EFI_STATUS
-RelocateFdt (
-  EFI_PHYSICAL_ADDRESS   OriginalFdt,
-  UINTN                  OriginalFdtSize,
-  EFI_PHYSICAL_ADDRESS   *RelocatedFdt,
-  UINTN                  *RelocatedFdtSize,
-  EFI_PHYSICAL_ADDRESS   *RelocatedFdtAlloc
-  )
-{
-  EFI_STATUS            Status;
-  INTN                  Error;
-  UINT64                FdtAlignment;
-
-  *RelocatedFdtSize = OriginalFdtSize + FDT_ADDITIONAL_ENTRIES_SIZE;
-
-  // If FDT load address needs to be aligned, allocate more space.
-  FdtAlignment = PcdGet32 (PcdArmLinuxFdtAlignment);
-  if (FdtAlignment != 0) {
-    *RelocatedFdtSize += FdtAlignment;
-  }
-
-  // Try below a watermark address.
-  Status = EFI_NOT_FOUND;
-  if (PcdGet32 (PcdArmLinuxFdtMaxOffset) != 0) {
-    *RelocatedFdt = LINUX_FDT_MAX_OFFSET;
-    Status = gBS->AllocatePages (AllocateMaxAddress, EfiBootServicesData,
-                    EFI_SIZE_TO_PAGES (*RelocatedFdtSize), RelocatedFdt);
-    if (EFI_ERROR (Status)) {
-      DEBUG ((EFI_D_WARN, "Warning: Failed to load FDT below address 0x%lX (%r). Will try again at a random address anywhere.\n", *RelocatedFdt, Status));
-    }
-  }
-
-  // Try anywhere there is available space.
-  if (EFI_ERROR (Status)) {
-    Status = gBS->AllocatePages (AllocateAnyPages, EfiBootServicesData,
-                    EFI_SIZE_TO_PAGES (*RelocatedFdtSize), RelocatedFdt);
-    if (EFI_ERROR (Status)) {
-      ASSERT_EFI_ERROR (Status);
-      return EFI_OUT_OF_RESOURCES;
-    } else {
-      DEBUG ((EFI_D_WARN, "WARNING: Loaded FDT at random address 0x%lX.\nWARNING: There is a risk of accidental overwriting by other code/data.\n", *RelocatedFdt));
-    }
-  }
-
-  *RelocatedFdtAlloc = *RelocatedFdt;
-  if (FdtAlignment != 0) {
-    *RelocatedFdt = ALIGN (*RelocatedFdt, FdtAlignment);
-  }
-
-  // Load the Original FDT tree into the new region
-  Error = fdt_open_into ((VOID*)(UINTN) OriginalFdt,
-            (VOID*)(UINTN)(*RelocatedFdt), *RelocatedFdtSize);
-  if (Error) {
-    DEBUG ((EFI_D_ERROR, "fdt_open_into(): %a\n", fdt_strerror (Error)));
-    gBS->FreePages (*RelocatedFdtAlloc, EFI_SIZE_TO_PAGES (*RelocatedFdtSize));
-    return EFI_INVALID_PARAMETER;
-  }
-
-  DEBUG_CODE_BEGIN();
-    // DebugDumpFdt ((VOID*)(UINTN)(*RelocatedFdt));
-  DEBUG_CODE_END();
-
-  return EFI_SUCCESS;
-}
-
-
-EFI_STATUS
-AmdStyxPrepareFdt (
-  IN     CONST CHAR8*         CommandLineArguments,
-  IN     EFI_PHYSICAL_ADDRESS InitrdImage,
-  IN     UINTN                InitrdImageSize,
-  IN OUT EFI_PHYSICAL_ADDRESS *FdtBlobBase,
-  IN OUT UINTN                *FdtBlobSize
-  )
-{
-  EFI_STATUS            Status;
-  EFI_PHYSICAL_ADDRESS  NewFdtBlobBase;
-  EFI_PHYSICAL_ADDRESS  NewFdtBlobAllocation;
-  UINTN                 NewFdtBlobSize;
-  VOID                 *fdt;
-  int                   err;
-  int                   node;
-  int                   cpu_node;
-  int                   lenp;
-  CONST VOID           *BootArg;
-  EFI_PHYSICAL_ADDRESS  InitrdImageStart;
-  EFI_PHYSICAL_ADDRESS  InitrdImageEnd;
-  FdtRegion             Region;
-  UINTN                 Index;
-  CHAR8                 Name[10];
-  LIST_ENTRY            ResourceList;
-  BDS_SYSTEM_MEMORY_RESOURCE  *Resource;
-  ARM_CORE_INFO         *ArmCoreInfoTable;
-  UINTN                 ArmCoreCount;
-  UINT32                PrimaryClusterId;
-  UINT32                PrimaryCoreId;
-  UINTN                 MemoryMapSize;
-  EFI_MEMORY_DESCRIPTOR *MemoryMap;
-  EFI_MEMORY_DESCRIPTOR *MemoryMapPtr;
-  UINTN                 MapKey;
-  UINTN                 DescriptorSize;
-  UINT32                DescriptorVersion;
-  UINTN                 Pages;
-  UINTN                 OriginalFdtSize;
-  int                   map_node;
-  int                   cluster_node;
-  int                   pmu_node;
-  PMU_INTERRUPT         PmuInt;
-  int                   phandle[NUM_CORES];
-  UINT32                ClusterIndex, CoreIndex;
-  UINT32                ClusterCount, CoresInCluster;
-  UINT32                ClusterId;
-  UINTN                 MpId, MbAddr;
-  AMD_MP_CORE_INFO_PROTOCOL *AmdMpCoreInfoProtocol;
-
-  //
-  // Sanity checks on the original FDT blob.
-  //
-  err = fdt_check_header ((VOID*)(UINTN)(*FdtBlobBase));
-  if (err != 0) {
-    Print (L"ERROR: Device Tree header not valid (err:%d)\n", err);
-    return EFI_INVALID_PARAMETER;
-  }
-
-  // The original FDT blob might have been loaded partially.
-  // Check that it is not the case.
-  OriginalFdtSize = (UINTN)fdt_totalsize ((VOID*)(UINTN)(*FdtBlobBase));
-  if (OriginalFdtSize > *FdtBlobSize) {
-    Print (L"ERROR: Incomplete FDT. Only %d/%d bytes have been loaded.\n",
-           *FdtBlobSize, OriginalFdtSize);
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Relocate the FDT to its final location.
-  //
-  NewFdtBlobAllocation = 0;
-  Status = RelocateFdt (*FdtBlobBase, OriginalFdtSize,
-             &NewFdtBlobBase, &NewFdtBlobSize, &NewFdtBlobAllocation);
-  if (EFI_ERROR (Status)) {
-    goto FAIL_RELOCATE_FDT;
-  }
-  fdt = (VOID*)(UINTN)NewFdtBlobBase;
-
-  node = fdt_subnode_offset (fdt, 0, "chosen");
-  if (node < 0) {
-    // The 'chosen' node does not exist, create it
-    node = fdt_add_subnode(fdt, 0, "chosen");
-    if (node < 0) {
-      DEBUG((EFI_D_ERROR,"Error on finding 'chosen' node\n"));
-      Status = EFI_INVALID_PARAMETER;
-      goto FAIL_COMPLETE_FDT;
-    }
-  }
-
-  DEBUG_CODE_BEGIN();
-    BootArg = fdt_getprop(fdt, node, "bootargs", &lenp);
-    if (BootArg != NULL) {
-      DEBUG((EFI_D_ERROR,"BootArg: %a\n",BootArg));
-    }
-  DEBUG_CODE_END();
-
-  //
-  // Set Linux CmdLine
-  //
-  if ((CommandLineArguments != NULL) && (AsciiStrLen (CommandLineArguments) > 0)) {
-    err = fdt_setprop(fdt, node, "bootargs", CommandLineArguments, AsciiStrSize(CommandLineArguments));
-    if (err) {
-      DEBUG((EFI_D_ERROR,"Fail to set new 'bootarg' (err:%d)\n",err));
-    }
-  }
-
-  //
-  // Set Linux Initrd
-  //
-  if (InitrdImageSize != 0) {
-    InitrdImageStart = cpu_to_fdt64 (InitrdImage);
-    err = fdt_setprop(fdt, node, "linux,initrd-start", &InitrdImageStart, sizeof(EFI_PHYSICAL_ADDRESS));
-    if (err) {
-      DEBUG((EFI_D_ERROR,"Fail to set new 'linux,initrd-start' (err:%d)\n",err));
-    }
-    InitrdImageEnd = cpu_to_fdt64 (InitrdImage + InitrdImageSize);
-    err = fdt_setprop(fdt, node, "linux,initrd-end", &InitrdImageEnd, sizeof(EFI_PHYSICAL_ADDRESS));
-    if (err) {
-      DEBUG((EFI_D_ERROR,"Fail to set new 'linux,initrd-start' (err:%d)\n",err));
-    }
-  }
-
-  //
-  // Set Physical memory setup if does not exist
-  //
-  node = fdt_subnode_offset(fdt, 0, "memory");
-  if (node < 0) {
-    // The 'memory' node does not exist, create it
-    node = fdt_add_subnode(fdt, 0, "memory");
-    if (node >= 0) {
-      fdt_setprop_string(fdt, node, "name", "memory");
-      fdt_setprop_string(fdt, node, "device_type", "memory");
-
-      GetSystemMemoryResources (&ResourceList);
-      Resource = (BDS_SYSTEM_MEMORY_RESOURCE*)ResourceList.ForwardLink;
-
-      Region.Base = cpu_to_fdtn ((UINTN)Resource->PhysicalStart);
-      Region.Size = cpu_to_fdtn ((UINTN)Resource->ResourceLength);
-
-      err = fdt_setprop(fdt, node, "reg", &Region, sizeof(Region));
-      if (err) {
-        DEBUG((EFI_D_ERROR,"Fail to set new 'memory region' (err:%d)\n",err));
-      }
-    }
-  }
-
-  //
-  // Add the memory regions reserved by the UEFI Firmware
-  //
-
-  // Retrieve the UEFI Memory Map
-  MemoryMap = NULL;
-  MemoryMapSize = 0;
-  Status = gBS->GetMemoryMap (&MemoryMapSize, MemoryMap, &MapKey, &DescriptorSize, &DescriptorVersion);
-  if (Status == EFI_BUFFER_TOO_SMALL) {
-    // The UEFI specification advises to allocate more memory for the MemoryMap buffer between successive
-    // calls to GetMemoryMap(), since allocation of the new buffer may potentially increase memory map size.
-    Pages = EFI_SIZE_TO_PAGES (MemoryMapSize) + 1;
-    MemoryMap = AllocatePages (Pages);
-    if (MemoryMap == NULL) {
-      Status = EFI_OUT_OF_RESOURCES;
-      goto FAIL_COMPLETE_FDT;
-    }
-    Status = gBS->GetMemoryMap (&MemoryMapSize, MemoryMap, &MapKey, &DescriptorSize, &DescriptorVersion);
-  }
-
-  // Go through the list and add the reserved region to the Device Tree
-  if (!EFI_ERROR(Status)) {
-    MemoryMapPtr = MemoryMap;
-    for (Index = 0; Index < (MemoryMapSize / DescriptorSize); Index++) {
-      if (IsLinuxReservedRegion ((EFI_MEMORY_TYPE)MemoryMapPtr->Type)) {
-        DEBUG((DEBUG_VERBOSE, "Reserved region of type %d [0x%lX, 0x%lX]\n",
-            MemoryMapPtr->Type,
-            (UINTN)MemoryMapPtr->PhysicalStart,
-            (UINTN)(MemoryMapPtr->PhysicalStart + MemoryMapPtr->NumberOfPages * EFI_PAGE_SIZE)));
-        err = fdt_add_mem_rsv(fdt, MemoryMapPtr->PhysicalStart, MemoryMapPtr->NumberOfPages * EFI_PAGE_SIZE);
-        if (err != 0) {
-          Print(L"Warning: Fail to add 'memreserve' (err:%d)\n", err);
-        }
-      }
-      MemoryMapPtr = (EFI_MEMORY_DESCRIPTOR*)((UINTN)MemoryMapPtr + DescriptorSize);
-    }
-  }
-
-  //
-  // Setup Arm Mpcore Info if it is a multi-core or multi-cluster platforms.
-  //
-  // For 'cpus' and 'cpu' device tree nodes bindings, refer to this file
-  // in the kernel documentation:
-  // Documentation/devicetree/bindings/arm/cpus.txt
-  //
-  Status = gBS->LocateProtocol (
-               &gAmdMpCoreInfoProtocolGuid,
-               NULL,
-               (VOID **)&AmdMpCoreInfoProtocol
-               );
-  ASSERT_EFI_ERROR (Status);
-
-  // Get pointer to ARM core info table
-  ArmCoreInfoTable = AmdMpCoreInfoProtocol->GetArmCoreInfoTable (&ArmCoreCount);
-  ASSERT (ArmCoreInfoTable != NULL);
-  ASSERT (ArmCoreCount <= NUM_CORES);
-
-  // Get Id from primary CPU
-  MpId = (UINTN) ArmReadMpidr ();
-  PrimaryClusterId = GET_CLUSTER_ID((UINT32) MpId);
-  PrimaryCoreId    = GET_CORE_ID((UINT32) MpId);
-
-  // Remove existing 'pmu' node and create a new one
-  pmu_node = fdt_subnode_offset (fdt, 0, "pmu");
-  if (pmu_node >= 0) {
-    fdt_del_node (fdt, pmu_node);
-  }
-  pmu_node = fdt_add_subnode(fdt, 0, "pmu");
-  if (pmu_node >= 0) {
-    // append PMU interrupts
-    for (Index = 0; Index < ArmCoreCount; Index++) {
-      MpId = (UINTN) GET_MPID (ArmCoreInfoTable[Index].ClusterId,
-                               ArmCoreInfoTable[Index].CoreId);
-
-      Status = AmdMpCoreInfoProtocol->GetPmuSpiFromMpId (MpId, &PmuInt.IntId);
-      if (EFI_ERROR (Status)) {
-        DEBUG ((EFI_D_ERROR, "FDT: Error getting PMU interrupt for MpId '0x%x'\n", MpId));
-        goto FAIL_COMPLETE_FDT;
-      }
-
-      PmuInt.Flag = cpu_to_fdt32(PMU_INT_FLAG_SPI);
-      PmuInt.IntId = cpu_to_fdt32(PmuInt.IntId);
-      PmuInt.Type = cpu_to_fdt32(PMU_INT_TYPE_HIGH_LEVEL);
-      fdt_appendprop(fdt, pmu_node, "interrupts", &PmuInt, sizeof(PmuInt));
-    }
-    fdt_setprop_string(fdt, pmu_node, "compatible", "arm,armv8-pmuv3");
-  } else {
-    DEBUG((EFI_D_ERROR,"FDT: Error creating 'pmu' node\n"));
-    Status = EFI_INVALID_PARAMETER;
-    goto FAIL_COMPLETE_FDT;
-  }
-
-  // Remove existing 'psci' node if feature not supported
-  node = fdt_subnode_offset (fdt, 0, "psci");
-  if (node >= 0) {
-    if (!FixedPcdGetBool (PcdPsciOsSupport)) {
-      fdt_del_node (fdt, node);
-    }
-  } else if (FixedPcdGetBool (PcdPsciOsSupport) &&
-      FixedPcdGetBool (PcdTrustedFWSupport)) {
-    // Add 'psci' node if not present
-    node = fdt_add_subnode(fdt, 0, "psci");
-    if (node >= 0) {
-      fdt_setprop_string(fdt, node, "compatible", "arm,psci-0.2");
-      fdt_appendprop_string(fdt, node, "compatible", "arm,psci");
-      fdt_setprop_string(fdt, node, "method", "smc");
-    } else {
-      DEBUG((EFI_D_ERROR,"FDT: Error creating 'psci' node\n"));
-      Status = EFI_INVALID_PARAMETER;
-      goto FAIL_COMPLETE_FDT;
-    }
-  }
-
-  // Remove existing 'cpus' node and create a new one
-  node = fdt_subnode_offset (fdt, 0, "cpus");
-  if (node >= 0) {
-    fdt_del_node (fdt, node);
-  }
-  node = fdt_add_subnode(fdt, 0, "cpus");
-  if (node >= 0) {
-    // Configure the 'cpus' node
-    fdt_setprop_string(fdt, node, "name", "cpus");
-    fdt_setprop_cell (fdt, node, "#address-cells", sizeof (UINTN) / 4);
-    fdt_setprop_cell(fdt, node, "#size-cells", 0);
-  } else {
-    DEBUG((EFI_D_ERROR,"FDT: Error creating 'cpus' node\n"));
-    Status = EFI_INVALID_PARAMETER;
-    goto FAIL_COMPLETE_FDT;
-  }
-
-  //
-  // Walk the processor table in reverse order for proper listing in FDT
-  //
-  Index = ArmCoreCount;
-  while (Index--) {
-    // Create 'cpu' node
-    AsciiSPrint (Name, sizeof(Name), "CPU%d", Index);
-    cpu_node = fdt_add_subnode (fdt, node, Name);
-    if (cpu_node < 0) {
-      DEBUG ((EFI_D_ERROR, "FDT: Error on creating '%a' node\n", Name));
-      Status = EFI_INVALID_PARAMETER;
-      goto FAIL_COMPLETE_FDT;
-    }
-    phandle[Index] = fdt_alloc_phandle(fdt);
-    fdt_setprop_cell (fdt, cpu_node, "phandle", phandle[Index]);
-    fdt_setprop_cell (fdt, cpu_node, "linux,phandle", phandle[Index]);
-
-    if (FixedPcdGetBool (PcdPsciOsSupport) &&
-      FixedPcdGetBool (PcdTrustedFWSupport)) {
-      fdt_setprop_string(fdt, cpu_node, "enable-method", "psci");
-    } else {
-      fdt_setprop_string(fdt, cpu_node, "enable-method", "spin-table");
-      MbAddr = ArmCoreInfoTable[Index].MailboxSetAddress;
-      MbAddr = cpu_to_fdtn (MbAddr);
-      fdt_setprop (fdt, cpu_node, "cpu-release-addr", &MbAddr, sizeof (MbAddr));
-    }
-    MpId = (UINTN) GET_MPID (ArmCoreInfoTable[Index].ClusterId,
-                                 ArmCoreInfoTable[Index].CoreId);
-    MpId = cpu_to_fdtn (MpId);
-    fdt_setprop (fdt, cpu_node, "reg", &MpId, sizeof (MpId));
-    fdt_setprop_string(fdt, cpu_node, "compatible", "arm,armv8");
-    fdt_setprop_string (fdt, cpu_node, "device_type", "cpu");
-
-    // If it is not the primary core than the cpu should be disabled
-    if (((ArmCoreInfoTable[Index].ClusterId != PrimaryClusterId) ||
-         (ArmCoreInfoTable[Index].CoreId != PrimaryCoreId))) {
-      fdt_setprop_string(fdt, cpu_node, "status", "disabled");
-    }
-  }
-
-  // Remove existing 'cpu-map' node and create a new one
-  map_node = fdt_subnode_offset (fdt, node, "cpu-map");
-  if (map_node >= 0) {
-    fdt_del_node (fdt, map_node);
-  }
-  map_node = fdt_add_subnode(fdt, node, "cpu-map");
-  if (map_node >= 0) {
-    ClusterIndex = ArmCoreCount - 1;
-    ClusterCount = NumberOfClustersInTable (ArmCoreInfoTable,
-                                            ArmCoreCount);
-    while (ClusterCount--) {
-      // Create 'cluster' node
-      AsciiSPrint (Name, sizeof(Name), "cluster%d", ClusterCount);
-      cluster_node = fdt_add_subnode (fdt, map_node, Name);
-      if (cluster_node < 0) {
-        DEBUG ((EFI_D_ERROR, "FDT: Error creating '%a' node\n", Name));
-        Status = EFI_INVALID_PARAMETER;
-        goto FAIL_COMPLETE_FDT;
-      }
-
-      ClusterId = ArmCoreInfoTable[ClusterIndex].ClusterId;
-      CoreIndex = ClusterIndex;
-      CoresInCluster = NumberOfCoresInCluster (ArmCoreInfoTable,
-                                               ArmCoreCount,
-                                               ClusterId);
-      while (CoresInCluster--) {
-        // Create 'core' node
-        AsciiSPrint (Name, sizeof(Name), "core%d", CoresInCluster);
-        cpu_node = fdt_add_subnode (fdt, cluster_node, Name);
-        if (cpu_node < 0) {
-          DEBUG ((EFI_D_ERROR, "FDT: Error creating '%a' node\n", Name));
-          Status = EFI_INVALID_PARAMETER;
-          goto FAIL_COMPLETE_FDT;
-        }
-        fdt_setprop_cell (fdt, cpu_node, "cpu", phandle[CoreIndex]);
-
-        // iterate to next core in cluster
-        if (CoresInCluster) {
-          do {
-             --CoreIndex;
-          } while (ClusterId != ArmCoreInfoTable[CoreIndex].ClusterId);
-        }
-      }
-
-      // iterate to next cluster
-      if (ClusterCount) {
-        do {
-           --ClusterIndex;
-        } while (ClusterInRange (ArmCoreInfoTable,
-                                 ArmCoreInfoTable[ClusterIndex].ClusterId,
-                                 ClusterIndex + 1,
-                                 ArmCoreCount - 1));
-      }
-    }
-  } else {
-    DEBUG((EFI_D_ERROR,"FDT: Error creating 'cpu-map' node\n"));
-    Status = EFI_INVALID_PARAMETER;
-    goto FAIL_COMPLETE_FDT;
-  }
-
-  SetSocIdStatus (fdt);
-  SetXgbeStatus (fdt);
-
-  DEBUG_CODE_BEGIN();
-    // DebugDumpFdt (fdt);
-  DEBUG_CODE_END();
-
-  // If we succeeded to generate the new Device Tree then free the old Device Tree
-  gBS->FreePages (*FdtBlobBase, EFI_SIZE_TO_PAGES (*FdtBlobSize));
-
-  // Update the real size of the Device Tree
-  fdt_pack ((VOID*)(UINTN)(NewFdtBlobBase));
-
-  *FdtBlobBase = NewFdtBlobBase;
-  *FdtBlobSize = (UINTN)fdt_totalsize ((VOID*)(UINTN)(NewFdtBlobBase));
-  return EFI_SUCCESS;
-
-FAIL_COMPLETE_FDT:
-  gBS->FreePages (NewFdtBlobAllocation, EFI_SIZE_TO_PAGES (NewFdtBlobSize));
-
-FAIL_RELOCATE_FDT:
-  *FdtBlobSize = (UINTN)fdt_totalsize ((VOID*)(UINTN)(*FdtBlobBase));
-  // Return success even if we failed to update the FDT blob.
-  // The original one is still valid.
-  return EFI_SUCCESS;
-}
-
diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.c b/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.c
deleted file mode 100644
index 09d650d2b831..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/** @file
-
-  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.<BR>
-
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "FdtDxe.h"
-
-extern  EFI_BOOT_SERVICES       *gBS;
-
-EFI_EVENT mFdtReadyToBootEvent;
-
-VOID
-EFIAPI
-FdtReadyToBoot (
-  IN      EFI_EVENT      Event,
-  IN      VOID           *Context
-  );
-
-EFI_STATUS
-EFIAPI
-FdtOverrideDevicePath(
-  IN CHAR16 *FdtFileName,
-  OUT EFI_DEVICE_PATH **FdtDevicePath
-  );
-
-
-/**
- *---------------------------------------------------------------------------------------
- *
- *  FdtDxeEntryPoint
- *
- *  Description:
- *    Entry point of the FDT Runtime Driver.
- *
- *  Control flow:
- *    Configure reserved regions.
- *
- *  Parameters:
- *    @param[in]      ImageHandle          The firmware allocate handle for the
- *                                         EFI image.
- *    @param[in]      *SystemTable         Pointer to the EFI System Table.
- *
- *    @return         EFI_STATUS
- *
- *------------------------------------------------------------------------------------
- **/
-EFI_STATUS
-EFIAPI
-FdtDxeEntryPoint (
-  IN EFI_HANDLE         ImageHandle,
-  IN EFI_SYSTEM_TABLE   *SystemTable
-  )
-{
-  EFI_STATUS              Status;
-
-  DEBUG ((EFI_D_ERROR, "FdtDxe Loaded\n"));
-
-  //
-  // Ready-To-Boot callback
-  //
-  Status = EfiCreateEventReadyToBootEx(
-                               TPL_CALLBACK,
-                               FdtReadyToBoot,
-                               NULL,
-                               &mFdtReadyToBootEvent
-                               );
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}
-
-/**
- *---------------------------------------------------------------------------------------
- *
- *  FdtReadyToBoot
- *
- *  Description:
- *  Ready-2-Boot Event Callback for EFI_EVENT_SIGNAL_READY_TO_BOOT.
- *
- *  Control flow:
- *    1. Read FDT blob
- *    2. Edit FDT table
- *    3. Submit FDT to EFI system table
- *
- *  Parameters:
- *    @param[in]      Event                EFI_EVENT notification.
- *    @param[in]      *Context             Pointer to the Event Context.
- *
- *    @return         VOID
- *
- *---------------------------------------------------------------------------------------
- **/
-VOID
-EFIAPI
-FdtReadyToBoot (
-  IN      EFI_EVENT      Event,
-  IN      VOID           *Context
-  )
-{
-  EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
-  EFI_HANDLE                    *HandleBuffer;
-  UINTN                         HandleCount;
-  UINTN                         Index;
-  EFI_STATUS                    Status;
-  UINT32                        AuthenticationStatus;
-  EFI_GUID                      *FdtGuid = FixedPcdGetPtr(PcdStyxFdt);
-  UINT8                         *FdtBlobBase = NULL;
-  UINTN                         FdtBlobSize = 0;
-  EFI_DEVICE_PATH               *FdtDevicePath;
-
-  // Search for FDT blob in EFI partition
-  Status = FdtOverrideDevicePath(L"fdt.dtb", &FdtDevicePath);
-  if (!EFI_ERROR (Status)) {
-    DEBUG ((EFI_D_ERROR, "%a: Loading Override FDT blob...\n", __FUNCTION__));
-
-    FdtBlobBase = (UINT8 *)(UINTN)LINUX_FDT_MAX_OFFSET;
-    Status = BdsLoadImage (FdtDevicePath,
-                           AllocateMaxAddress,
-                           (EFI_PHYSICAL_ADDRESS *)&FdtBlobBase,
-                           &FdtBlobSize);
-    if (!EFI_ERROR (Status) && FdtBlobBase && FdtBlobSize)
-      goto LOAD_FDT_BLOB;
-    else
-      goto LOAD_FDT_ERROR;
-  }
-
-  DEBUG ((EFI_D_ERROR, "%a: Loading Embedded FDT blob...\n", __FUNCTION__));
-  HandleBuffer = NULL;
-  Status = gBS->LocateHandleBuffer (
-                  ByProtocol,
-                  &gEfiFirmwareVolume2ProtocolGuid,
-                  NULL,
-                  &HandleCount,
-                  &HandleBuffer
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  for (Index = 0; Index < HandleCount; Index++) {
-    Status = gBS->HandleProtocol (
-                  HandleBuffer[Index],
-                  &gEfiFirmwareVolume2ProtocolGuid,
-                  (VOID **) &FvProtocol
-                  );
-    if (!EFI_ERROR (Status)) {
-      Status = FvProtocol->ReadSection (
-                            FvProtocol,
-                            FdtGuid,
-                            EFI_SECTION_RAW,
-                            0,
-                            (VOID **)&FdtBlobBase,
-                            &FdtBlobSize,
-                            &AuthenticationStatus
-                            );
-      if (!EFI_ERROR (Status) && FdtBlobBase && FdtBlobSize)
-        goto LOAD_FDT_BLOB;
-    }
-  }
-
-LOAD_FDT_ERROR:
-  DEBUG ((EFI_D_ERROR, "%a: Error loading FDT blob!\n", __FUNCTION__));
-  goto LOAD_FDT_DONE;
-
-LOAD_FDT_BLOB:
-  Status = AmdStyxPrepareFdt(NULL, 0, 0, (EFI_PHYSICAL_ADDRESS *)&FdtBlobBase, &FdtBlobSize);
-  ASSERT_EFI_ERROR (Status);
-
-  // Install the FDT blob into EFI system configuration table
-  Status = gBS->InstallConfigurationTable (&gFdtTableGuid, (VOID *)FdtBlobBase);
-  ASSERT_EFI_ERROR (Status);
-  DEBUG ((EFI_D_ERROR, "%a: FDT ready!\n", __FUNCTION__));
-
-LOAD_FDT_DONE:
-  gBS->CloseEvent (mFdtReadyToBootEvent);
-  return;
-}
-
-/**
-*---------------------------------------------------------------------------------------
-*
-*  FdtOverrideDevicePath
-*
-*  Description:
-*    Looks for a user-provided FDT blob to override the default file built with the UEFI image.
-*
-*  Parameters:
-*    @param[in]      FdtFileName       Name of the FDT blob located in the EFI partition.
-*    @param[out]     FdtDevicePath     EFI Device Path of the FDT blob.
-*
-*    @return EFI_SUCCESS           The function completed successfully.
-*    @return EFI_NOT_FOUND         The protocol could not be located.
-*    @return EFI_OUT_OF_RESOURCES  There are not enough resources to find the protocol.
-*
-*---------------------------------------------------------------------------------------
-**/
-EFI_STATUS
-EFIAPI
-FdtOverrideDevicePath(
-  IN CHAR16 *FdtFileName,
-  OUT EFI_DEVICE_PATH **FdtDevicePath
-  )
-{
-  EFI_DEVICE_PATH_PROTOCOL        *DevPathProtocol;
-  EFI_HANDLE                      *HandleBuffer;
-  UINTN                           HandleCount;
-  UINTN                           Index;
-  EFI_STATUS                      Status;
-  CHAR16                          *DevPathText;
-  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *VolProtocol;
-  EFI_FILE_PROTOCOL               *FileProtocol;
-  EFI_FILE_PROTOCOL               *FileHandle;
-  CHAR16                          FilePathText[120];
-
-  HandleBuffer = NULL;
-  Status = gBS->LocateHandleBuffer (
-                ByProtocol,
-                &gEfiSimpleFileSystemProtocolGuid,
-                NULL,
-                &HandleCount,
-                &HandleBuffer);
-  if (EFI_ERROR (Status))
-    return Status;
-
-  for (Index = 0; Index < HandleCount; Index++) {
-    DevPathProtocol = NULL;
-    Status = gBS->HandleProtocol (
-                  HandleBuffer[Index],
-                  &gEfiDevicePathProtocolGuid,
-                  (VOID **) &DevPathProtocol);
-
-    if (!EFI_ERROR (Status)) {
-      VolProtocol = NULL;
-      Status = gBS->HandleProtocol (
-                    HandleBuffer[Index],
-                    &gEfiSimpleFileSystemProtocolGuid,
-                    (VOID **) &VolProtocol);
-
-      if (!EFI_ERROR (Status)) {
-        FileProtocol = NULL;
-        Status = VolProtocol->OpenVolume(VolProtocol, &FileProtocol);
-
-        if (!EFI_ERROR (Status)) {
-          FileHandle = NULL;
-          Status = FileProtocol->Open(FileProtocol,
-                                      &FileHandle,
-                                      FdtFileName,
-                                      EFI_FILE_MODE_READ,
-                                      0);
-
-          if (!EFI_ERROR (Status)) {
-            FileProtocol->Close(FileHandle);
-            DevPathText = ConvertDevicePathToText(DevPathProtocol, TRUE, FALSE);
-            StrCpy(FilePathText, DevPathText);
-            StrCat(FilePathText, L"/");
-            StrCat(FilePathText, FdtFileName);
-            *FdtDevicePath = ConvertTextToDevicePath (FilePathText);
-            return EFI_SUCCESS;
-          }
-        }
-      }
-    }
-  }
-
-  return Status;
-}
-
diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.h b/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.h
deleted file mode 100644
index c61b7ec7e326..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @file
-
-  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.<BR>
-
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __FDT_DXE__H_
-#define __FDT_DXE__H_
-
-#include <Uefi.h>
-#include <Library/UefiLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-
-#include <Library/BaseLib.h>
-#include <Library/BdsLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DebugLib.h>
-#include <Library/DevicePathLib.h>
-#include <Guid/DxeServices.h>
-#include <Library/DxeServicesTableLib.h>
-
-#include <Protocol/FirmwareVolume2.h>
-#include <Protocol/SimpleFileSystem.h>
-#include <Protocol/LoadFile.h>
-#include <Protocol/DevicePath.h>
-#include <Protocol/DevicePathFromText.h>
-
-#define LINUX_FDT_MAX_OFFSET      (PcdGet64 (PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxFdtMaxOffset))
-
-VOID
-EFIAPI
-AmdStyxParkSecondaryCores(
-  VOID
-  );
-
-EFI_STATUS
-AmdStyxPrepareFdt (
-  IN     CONST CHAR8*         CommandLineArguments,
-  IN     EFI_PHYSICAL_ADDRESS InitrdImage,
-  IN     UINTN                InitrdImageSize,
-  IN OUT EFI_PHYSICAL_ADDRESS *FdtBlobBase,
-  IN OUT UINTN                *FdtBlobSize
-  );
-
-
-#endif // __FDT_DXE__H_
diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.inf b/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.inf
deleted file mode 100644
index 5479c7b0abfb..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/FdtDxe.inf
+++ /dev/null
@@ -1,76 +0,0 @@
-#/* @file
-#
-#  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.<BR>
-#
-#  This program and the accompanying materials
-#  are licensed and made available under the terms and conditions of the BSD License
-#  which accompanies this distribution.  The full text of the license may be found at
-#  http://opensource.org/licenses/bsd-license.php
-#
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#*/
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = FdtDxe
-  FILE_GUID                      = 17f50855-6484-4b56-814b-1a88702d88e1
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-  ENTRY_POINT                    = FdtDxeEntryPoint
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = AARCH64
-#
-#
-
-[Sources.common]
-  FdtDxe.c
-  BdsLinuxFdt.c
-  LinuxLoaderHelper.c
-
-[Packages]
-  ArmPkg/ArmPkg.dec
-  EmbeddedPkg/EmbeddedPkg.dec
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  AmdModulePkg/AmdModulePkg.dec
-  OpenPlatformPkg/Platforms/AMD/Styx/AmdStyx.dec
-  ShellPkg/ShellPkg.dec
-
-[LibraryClasses]
-  UefiDriverEntryPoint
-  DxeServicesTableLib
-  BdsLib
-  FdtLib
-  PcdLib
-  DevicePathLib
-
-[Guids]
-  gEfiEventReadyToBootGuid           ## CONSUMED
-  gEfiDxeServicesTableGuid           ## CONSUMED
-  gFdtTableGuid                      ## CONSUMED
-
-[Protocols]
-  gEfiFirmwareVolume2ProtocolGuid    ## CONSUMED
-  gAmdMpCoreInfoProtocolGuid         ## CONSUMED
-
-[Pcd]
-  gAmdStyxTokenSpaceGuid.PcdStyxFdt
-  gAmdStyxTokenSpaceGuid.PcdSocCpuId
-  gAmdStyxTokenSpaceGuid.PcdEthMacA
-  gAmdStyxTokenSpaceGuid.PcdEthMacB
-  gArmTokenSpaceGuid.PcdSystemMemoryBase
-
-[FixedPcd]
-  gArmTokenSpaceGuid.PcdArmLinuxFdtMaxOffset
-  gArmTokenSpaceGuid.PcdArmLinuxFdtAlignment
-  gAmdStyxTokenSpaceGuid.PcdPsciOsSupport
-  gAmdStyxTokenSpaceGuid.PcdTrustedFWSupport
-  gAmdStyxTokenSpaceGuid.PcdSata1PortCount
-
-[Depex]
-  TRUE
diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoader.h b/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoader.h
deleted file mode 100644
index ff6c72cc76f2..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoader.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/** @file
-*
-*  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
-*  Copyright (c) 2015 - 2016, AMD Inc. All rights reserved.<BR>
-*
-*  This program and the accompanying materials
-*  are licensed and made available under the terms and conditions of the BSD License
-*  which accompanies this distribution.  The full text of the license may be found at
-*  http://opensource.org/licenses/bsd-license.php
-*
-*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*
-**/
-/**
-
-  Derived from:
-   ArmPkg/Library/BdsLib/LinuxLoader.h
-
-**/
-
-#ifndef __LINUX_LOADER_H__
-#define __LINUX_LOADER_H__
-
-#include <Library/BdsLib.h>
-#include <Library/DebugLib.h>
-#include <Library/HiiLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/PerformanceLib.h>
-#include <Library/PrintLib.h>
-#include <Library/ShellLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
-
-#include <Protocol/EfiShellParameters.h>
-#include <Protocol/EfiShell.h>
-
-#include <libfdt.h>
-
-//
-// Definitions
-//
-
-#define MAX_MSG_LEN 80
-
-#define LINUX_UIMAGE_SIGNATURE    0x56190527
-#define LINUX_KERNEL_MAX_OFFSET   (SystemMemoryBase + PcdGet32(PcdArmLinuxKernelMaxOffset))
-#define LINUX_ATAG_MAX_OFFSET     (SystemMemoryBase + PcdGet32(PcdArmLinuxAtagMaxOffset))
-#define LINUX_FDT_MAX_OFFSET      (SystemMemoryBase + PcdGet32(PcdArmLinuxFdtMaxOffset))
-
-#define ARM_FDT_MACHINE_TYPE      0xFFFFFFFF
-
-// Additional size that could be used for FDT entries added by the UEFI OS Loader
-// Estimation based on: EDID (300bytes) + bootargs (200bytes) + initrd region (20bytes)
-//                      + system memory region (20bytes) + mp_core entries (200 bytes)
-#define FDT_ADDITIONAL_ENTRIES_SIZE     0x300
-
-//
-// Global variables
-//
-extern CONST EFI_GUID mLinuxLoaderHiiGuid;
-extern EFI_HANDLE mLinuxLoaderHiiHandle;
-
-//
-// Local Types
-//
-typedef struct _SYSTEM_MEMORY_RESOURCE {
-  LIST_ENTRY                  Link; // This attribute must be the first entry of this structure (to avoid pointer computation)
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
-  UINT64                      ResourceLength;
-} SYSTEM_MEMORY_RESOURCE;
-
-typedef VOID (*LINUX_KERNEL)(UINT32 Zero, UINT32 Arch, UINTN ParametersBase);
-
-//
-// Functions
-//
-EFI_STATUS
-PrintHii (
-  IN CONST CHAR8          *Language OPTIONAL,
-  IN CONST EFI_STRING_ID  HiiFormatStringId,
-  ...
-  );
-
-VOID
-PrintHelp (
-  IN CONST CHAR8  *Language OPTIONAL
-  );
-
-EFI_STATUS
-ProcessShellParameters (
-  OUT  CHAR16   **KernelPath,
-  OUT  CHAR16   **FdtPath,
-  OUT  CHAR16   **InitrdPath,
-  OUT  CHAR16   **LinuxCommandLine,
-  OUT  UINTN    *AtagMachineType
-  );
-
-EFI_STATUS
-ProcessAppCommandLine (
-  OUT  CHAR16   **KernelTextDevicePath,
-  OUT  CHAR16   **FdtTextDevicePath,
-  OUT  CHAR16   **InitrdTextDevicePath,
-  OUT  CHAR16   **LinuxCommandLine,
-  OUT  UINTN    *AtagMachineType
-  );
-
-VOID
-PrintPerformance (
-  VOID
-  );
-
-EFI_STATUS
-GetSystemMemoryResources (
-  IN  LIST_ENTRY *ResourceList
-  );
-
-EFI_STATUS
-PrepareFdt (
-  IN     EFI_PHYSICAL_ADDRESS SystemMemoryBase,
-  IN     CONST CHAR8*         CommandLineArguments,
-  IN     EFI_PHYSICAL_ADDRESS InitrdImage,
-  IN     UINTN                InitrdImageSize,
-  IN OUT EFI_PHYSICAL_ADDRESS *FdtBlobBase,
-  IN OUT UINTN                *FdtBlobSize
-  );
-
-/**
-  Start a Linux kernel from a Device Path
-
-  @param  SystemMemoryBase      Base of the system memory
-  @param  LinuxKernel           Device Path to the Linux Kernel
-  @param  Parameters            Linux kernel arguments
-  @param  Fdt                   Device Path to the Flat Device Tree
-  @param  MachineType           ARM machine type value
-
-  @retval EFI_SUCCESS           All drivers have been connected
-  @retval EFI_NOT_FOUND         The Linux kernel Device Path has not been found
-  @retval EFI_OUT_OF_RESOURCES  There is not enough resource memory to store the matching results.
-  @retval RETURN_UNSUPPORTED    ATAG is not support by this architecture
-
-**/
-EFI_STATUS
-BootLinuxAtag (
-  IN  EFI_PHYSICAL_ADDRESS      SystemMemoryBase,
-  IN  EFI_DEVICE_PATH_PROTOCOL* LinuxKernelDevicePath,
-  IN  EFI_DEVICE_PATH_PROTOCOL* InitrdDevicePath,
-  IN  CONST CHAR8*              CommandLineArguments,
-  IN  UINTN                     MachineType
-  );
-
-/**
-  Start a Linux kernel from a Device Path
-
-  @param[in]  LinuxKernelDevicePath  Device Path to the Linux Kernel
-  @param[in]  InitrdDevicePath       Device Path to the Initrd
-  @param[in]  Arguments              Linux kernel arguments
-
-  @retval EFI_SUCCESS           All drivers have been connected
-  @retval EFI_NOT_FOUND         The Linux kernel Device Path has not been found
-  @retval EFI_OUT_OF_RESOURCES  There is not enough resource memory to store the matching results.
-
-**/
-EFI_STATUS
-BootLinuxFdt (
-  IN  EFI_PHYSICAL_ADDRESS      SystemMemoryBase,
-  IN  EFI_DEVICE_PATH_PROTOCOL* LinuxKernelDevicePath,
-  IN  EFI_DEVICE_PATH_PROTOCOL* InitrdDevicePath,
-  IN  EFI_DEVICE_PATH_PROTOCOL* FdtDevicePath,
-  IN  CONST CHAR8*              Arguments
-  );
-
-#endif /* __LINUX_LOADER_H__ */
diff --git a/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoaderHelper.c b/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoaderHelper.c
deleted file mode 100644
index 80dce8d545b8..000000000000
--- a/Platforms/AMD/Styx/Drivers/FdtDxe/LinuxLoaderHelper.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/** @file
-*
-*  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
-*  Copyright (c) 2014 - 2016, AMD Inc. All rights reserved.
-*
-*  This program and the accompanying materials
-*  are licensed and made available under the terms and conditions of the BSD License
-*  which accompanies this distribution.  The full text of the license may be found at
-*  http://opensource.org/licenses/bsd-license.php
-*
-*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*
-**/
-/**
-
-  Derived from:
-   ArmPkg/Application/LinuxLoader/LinuxLoaderHelper.c
-
-**/
-
-
-#include <PiDxe.h>
-#include <Library/HobLib.h>
-#include <Library/TimerLib.h>
-#include <Library/SerialPortLib.h>
-
-#include "LinuxLoader.h"
-
-STATIC CONST CHAR8 *mTokenList[] = {
-  /*"SEC",*/
-  "PEI",
-  "DXE",
-  "BDS",
-  NULL
-};
-
-VOID
-PrintPerformance (
-  VOID
-  )
-{
-  UINTN       Key;
-  CONST VOID  *Handle;
-  CONST CHAR8 *Token, *Module;
-  UINT64      Start, Stop, TimeStamp;
-  UINT64      Delta, TicksPerSecond, Milliseconds;
-  UINTN       Index;
-  CHAR8       Buffer[100];
-  UINTN       CharCount;
-  BOOLEAN     CountUp;
-
-  TicksPerSecond = GetPerformanceCounterProperties (&Start, &Stop);
-  if (Start < Stop) {
-    CountUp = TRUE;
-  } else {
-    CountUp = FALSE;
-  }
-
-  TimeStamp = 0;
-  Key       = 0;
-  do {
-    Key = GetPerformanceMeasurement (Key, (CONST VOID **)&Handle, &Token, &Module, &Start, &Stop);
-    if (Key != 0) {
-      for (Index = 0; mTokenList[Index] != NULL; Index++) {
-        if (AsciiStriCmp (mTokenList[Index], Token) == 0) {
-          Delta = CountUp ? (Stop - Start) : (Start - Stop);
-          TimeStamp += Delta;
-          Milliseconds = DivU64x64Remainder (MultU64x32 (Delta, 1000), TicksPerSecond, NULL);
-          CharCount = AsciiSPrint (Buffer, sizeof (Buffer), "%6a %6ld ms\n", Token, Milliseconds);
-          SerialPortWrite ((UINT8 *) Buffer, CharCount);
-          break;
-        }
-      }
-    }
-  } while (Key != 0);
-
-  CharCount = AsciiSPrint (Buffer, sizeof (Buffer), "Total Time = %ld ms\n\n",
-      DivU64x64Remainder (MultU64x32 (TimeStamp, 1000), TicksPerSecond, NULL));
-  SerialPortWrite ((UINT8 *) Buffer, CharCount);
-}
-
-STATIC
-EFI_STATUS
-InsertSystemMemoryResources (
-  LIST_ENTRY *ResourceList,
-  EFI_HOB_RESOURCE_DESCRIPTOR *ResHob
-  )
-{
-  SYSTEM_MEMORY_RESOURCE  *NewResource;
-  LIST_ENTRY              *Link;
-  LIST_ENTRY              *NextLink;
-  LIST_ENTRY              AttachedResources;
-  SYSTEM_MEMORY_RESOURCE  *Resource;
-  EFI_PHYSICAL_ADDRESS    NewResourceEnd;
-
-  if (IsListEmpty (ResourceList)) {
-    NewResource = AllocateZeroPool (sizeof (SYSTEM_MEMORY_RESOURCE));
-    NewResource->PhysicalStart = ResHob->PhysicalStart;
-    NewResource->ResourceLength = ResHob->ResourceLength;
-    InsertTailList (ResourceList, &NewResource->Link);
-    return EFI_SUCCESS;
-  }
-
-  InitializeListHead (&AttachedResources);
-
-  Link = ResourceList->ForwardLink;
-  ASSERT (Link != NULL);
-  while (Link != ResourceList) {
-    Resource = (SYSTEM_MEMORY_RESOURCE*)Link;
-
-    // Sanity Check. The resources should not overlapped.
-    ASSERT (!((ResHob->PhysicalStart >= Resource->PhysicalStart) && (ResHob->PhysicalStart < (Resource->PhysicalStart + Resource->ResourceLength))));
-    ASSERT (!((ResHob->PhysicalStart + ResHob->ResourceLength - 1 >= Resource->PhysicalStart) &&
-        ((ResHob->PhysicalStart + ResHob->ResourceLength - 1) < (Resource->PhysicalStart + Resource->ResourceLength))));
-
-    // The new resource is attached after this resource descriptor
-    if (ResHob->PhysicalStart == Resource->PhysicalStart + Resource->ResourceLength) {
-      Resource->ResourceLength =  Resource->ResourceLength + ResHob->ResourceLength;
-
-      NextLink = RemoveEntryList (&Resource->Link);
-      InsertTailList (&AttachedResources, &Resource->Link);
-      Link = NextLink;
-    }
-    // The new resource is attached before this resource descriptor
-    else if (ResHob->PhysicalStart + ResHob->ResourceLength == Resource->PhysicalStart) {
-      Resource->PhysicalStart = ResHob->PhysicalStart;
-      Resource->ResourceLength =  Resource->ResourceLength + ResHob->ResourceLength;
-
-      NextLink = RemoveEntryList (&Resource->Link);
-      InsertTailList (&AttachedResources, &Resource->Link);
-      Link = NextLink;
-    } else {
-      Link = Link->ForwardLink;
-    }
-  }
-
-  if (!IsListEmpty (&AttachedResources)) {
-    // See if we can merge the attached resource with other resources
-
-    NewResource = (SYSTEM_MEMORY_RESOURCE*)GetFirstNode (&AttachedResources);
-    Link = RemoveEntryList (&NewResource->Link);
-    while (!IsListEmpty (&AttachedResources)) {
-      // Merge resources
-      Resource = (SYSTEM_MEMORY_RESOURCE*)Link;
-
-      // Ensure they overlap each other
-      ASSERT (
-          ((NewResource->PhysicalStart >= Resource->PhysicalStart) && (NewResource->PhysicalStart < (Resource->PhysicalStart + Resource->ResourceLength))) ||
-          (((NewResource->PhysicalStart + NewResource->ResourceLength) >= Resource->PhysicalStart) && ((NewResource->PhysicalStart + NewResource->ResourceLength) < (Resource->PhysicalStart + Resource->ResourceLength)))
-      );
-
-      NewResourceEnd = MAX (NewResource->PhysicalStart + NewResource->ResourceLength, Resource->PhysicalStart + Resource->ResourceLength);
-      NewResource->PhysicalStart = MIN (NewResource->PhysicalStart, Resource->PhysicalStart);
-      NewResource->ResourceLength = NewResourceEnd - NewResource->PhysicalStart;
-
-      Link = RemoveEntryList (Link);
-    }
-  } else {
-    // None of the Resource of the list is attached to this ResHob. Create a new entry for it
-    NewResource = AllocateZeroPool (sizeof (SYSTEM_MEMORY_RESOURCE));
-    NewResource->PhysicalStart = ResHob->PhysicalStart;
-    NewResource->ResourceLength = ResHob->ResourceLength;
-  }
-  InsertTailList (ResourceList, &NewResource->Link);
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-GetSystemMemoryResources (
-  IN  LIST_ENTRY *ResourceList
-  )
-{
-  EFI_HOB_RESOURCE_DESCRIPTOR *ResHob;
-
-  InitializeListHead (ResourceList);
-
-  // Find the first System Memory Resource Descriptor
-  ResHob = (EFI_HOB_RESOURCE_DESCRIPTOR *)GetFirstHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR);
-  while ((ResHob != NULL) && (ResHob->ResourceType != EFI_RESOURCE_SYSTEM_MEMORY)) {
-    ResHob = (EFI_HOB_RESOURCE_DESCRIPTOR *)GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (VOID *)((UINTN)ResHob + ResHob->Header.HobLength));
-  }
-
-  // Did not find any
-  if (ResHob == NULL) {
-    return EFI_NOT_FOUND;
-  } else {
-    InsertSystemMemoryResources (ResourceList, ResHob);
-  }
-
-  ResHob = (EFI_HOB_RESOURCE_DESCRIPTOR *)GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (VOID *)((UINTN)ResHob + ResHob->Header.HobLength));
-  while (ResHob != NULL) {
-    if (ResHob->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
-      InsertSystemMemoryResources (ResourceList, ResHob);
-    }
-    ResHob = (EFI_HOB_RESOURCE_DESCRIPTOR *)GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, (VOID *)((UINTN)ResHob + ResHob->Header.HobLength));
-  }
-
-  return EFI_SUCCESS;
-}
