]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPlatformPkg/ArmJunoDxe: use the generic non-discoverable device support
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 30 Mar 2017 09:31:44 +0000 (10:31 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Wed, 5 Apr 2017 13:55:11 +0000 (14:55 +0100)
Replace the open coded reimplementation of 'PCI emulation' with a pair
of calls into NonDiscoverableDeviceRegistrationLib to register the OHCI
and EHCI controllers. These will be picked up by the generic driver instead.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.inf
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxeInternal.h
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.c [deleted file]
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.h [deleted file]
ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciRootBridgeIo.c [deleted file]

index f13c49559bb4364db9d5573fcbe6bbe946e4f194..14ff189a3078886215366fbc4892c34297a36c80 100644 (file)
@@ -28,6 +28,7 @@
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/DevicePathLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
+#include <Library/NonDiscoverableDeviceRegistrationLib.h>\r
 #include <Library/UefiRuntimeServicesTableLib.h>\r
 #include <Library/IoLib.h>\r
 #include <Library/PrintLib.h>\r
@@ -447,10 +448,31 @@ ArmJunoEntryPoint (
   UINT32                JunoRevision;\r
   EFI_EVENT             EndOfDxeEvent;\r
 \r
-  Status = PciEmulationEntryPoint ();\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
+  //\r
+  // Register the OHCI and EHCI controllers as non-coherent\r
+  // non-discoverable devices.\r
+  //\r
+  Status = RegisterNonDiscoverableMmioDevice (\r
+             NonDiscoverableDeviceTypeOhci,\r
+             NonDiscoverableDeviceDmaTypeNonCoherent,\r
+             NULL,\r
+             NULL,\r
+             1,\r
+             FixedPcdGet32 (PcdSynopsysUsbOhciBaseAddress),\r
+             SIZE_64KB\r
+             );\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+  Status = RegisterNonDiscoverableMmioDevice (\r
+             NonDiscoverableDeviceTypeEhci,\r
+             NonDiscoverableDeviceDmaTypeNonCoherent,\r
+             NULL,\r
+             NULL,\r
+             1,\r
+             FixedPcdGet32 (PcdSynopsysUsbEhciBaseAddress),\r
+             SIZE_64KB\r
+             );\r
+  ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
   // If a hypervisor has been declared then we need to make sure its region is protected at runtime\r
index 168070c6add481157134936b3ad82587abcc77c2..6719d0adcc873800b46fee402d22d080645e0eb1 100644 (file)
@@ -21,8 +21,6 @@
 [Sources.common]\r
   AcpiTables.c\r
   ArmJunoDxe.c\r
-  PciEmulation.c\r
-  PciRootBridgeIo.c\r
 \r
 [Packages]\r
   ArmPkg/ArmPkg.dec\r
@@ -42,6 +40,7 @@
   DmaLib\r
   DxeServicesTableLib\r
   IoLib\r
+  NonDiscoverableDeviceRegistrationLib\r
   PcdLib\r
   PrintLib\r
   SerialPortLib\r
index df0277067e3444707cc07cddf0333a47c6864199..5d2b68fabd124775c1b597756a7d7b46df019f67 100644 (file)
 #define R_TST_CTRL_1                  0x0158     /* Test Control Register 1 */\r
 \r
 \r
-EFI_STATUS\r
-PciEmulationEntryPoint (\r
-  VOID\r
-  );\r
-\r
 /**\r
  * Callback called when ACPI Protocol is installed\r
  */\r
diff --git a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.c b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.c
deleted file mode 100644 (file)
index 2ddebf6..0000000
+++ /dev/null
@@ -1,596 +0,0 @@
-/** @file\r
-\r
-  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-  Copyright (c) 2013 - 2014, ARM Ltd. All rights reserved.<BR>\r
-\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
-**/\r
-\r
-#include "PciEmulation.h"\r
-\r
-#define HOST_CONTROLLER_OPERATION_REG_SIZE  0x44\r
-\r
-typedef struct {\r
-  ACPI_HID_DEVICE_PATH      AcpiDevicePath;\r
-  PCI_DEVICE_PATH           PciDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} EFI_PCI_IO_DEVICE_PATH;\r
-\r
-typedef struct {\r
-  UINT32                  Signature;\r
-  EFI_PCI_IO_DEVICE_PATH  DevicePath;\r
-  EFI_PCI_IO_PROTOCOL     PciIoProtocol;\r
-  PCI_TYPE00              *ConfigSpace;\r
-  PCI_ROOT_BRIDGE         RootBridge;\r
-  UINTN                   Segment;\r
-} EFI_PCI_IO_PRIVATE_DATA;\r
-\r
-#define EFI_PCI_IO_PRIVATE_DATA_SIGNATURE     SIGNATURE_32('p', 'c', 'i', 'o')\r
-#define EFI_PCI_IO_PRIVATE_DATA_FROM_THIS(a)  CR (a, EFI_PCI_IO_PRIVATE_DATA, PciIoProtocol, EFI_PCI_IO_PRIVATE_DATA_SIGNATURE)\r
-\r
-EFI_PCI_IO_DEVICE_PATH PciIoDevicePathTemplate =\r
-{\r
-  {\r
-    { ACPI_DEVICE_PATH, ACPI_DP, { sizeof (ACPI_HID_DEVICE_PATH), 0 } },\r
-    EISA_PNP_ID(0x0A03),  // HID\r
-    0                     // UID\r
-  },\r
-  {\r
-    { HARDWARE_DEVICE_PATH, HW_PCI_DP, { sizeof (PCI_DEVICE_PATH), 0 } },\r
-    0,\r
-    0\r
-  },\r
-  { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0} }\r
-};\r
-\r
-STATIC\r
-VOID\r
-ConfigureUSBHost (\r
-  VOID\r
-  )\r
-{\r
-}\r
-\r
-\r
-EFI_STATUS\r
-PciIoPollMem (\r
-  IN EFI_PCI_IO_PROTOCOL           *This,\r
-  IN  EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN  UINT8                        BarIndex,\r
-  IN  UINT64                       Offset,\r
-  IN  UINT64                       Mask,\r
-  IN  UINT64                       Value,\r
-  IN  UINT64                       Delay,\r
-  OUT UINT64                       *Result\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoPollIo (\r
-  IN EFI_PCI_IO_PROTOCOL           *This,\r
-  IN  EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN  UINT8                        BarIndex,\r
-  IN  UINT64                       Offset,\r
-  IN  UINT64                       Mask,\r
-  IN  UINT64                       Value,\r
-  IN  UINT64                       Delay,\r
-  OUT UINT64                       *Result\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoMemRead (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT8                        BarIndex,\r
-  IN     UINT64                       Offset,\r
-  IN     UINTN                        Count,\r
-  IN OUT VOID                         *Buffer\r
-  )\r
-{\r
-  EFI_PCI_IO_PRIVATE_DATA *Private = EFI_PCI_IO_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  return PciRootBridgeIoMemRead (&Private->RootBridge.Io,\r
-                                (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width,\r
-                                Private->ConfigSpace->Device.Bar[BarIndex] + Offset, //Fix me ConfigSpace\r
-                                Count,\r
-                                Buffer\r
-                                );\r
-}\r
-\r
-EFI_STATUS\r
-PciIoMemWrite (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT8                        BarIndex,\r
-  IN     UINT64                       Offset,\r
-  IN     UINTN                        Count,\r
-  IN OUT VOID                         *Buffer\r
-  )\r
-{\r
-  EFI_PCI_IO_PRIVATE_DATA *Private = EFI_PCI_IO_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  return PciRootBridgeIoMemWrite (&Private->RootBridge.Io,\r
-                                 (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width,\r
-                                 Private->ConfigSpace->Device.Bar[BarIndex] + Offset,  //Fix me ConfigSpace\r
-                                 Count,\r
-                                 Buffer\r
-                                 );\r
-}\r
-\r
-EFI_STATUS\r
-PciIoIoRead (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT8                        BarIndex,\r
-  IN     UINT64                       Offset,\r
-  IN     UINTN                        Count,\r
-  IN OUT VOID                         *Buffer\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoIoWrite (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT8                        BarIndex,\r
-  IN     UINT64                       Offset,\r
-  IN     UINTN                        Count,\r
-  IN OUT VOID                         *Buffer\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-/**\r
-  Enable a PCI driver to read PCI controller registers in PCI configuration space.\r
-\r
-  @param[in]      This    A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
-  @param[in]      Width   Signifies the width of the memory operations.\r
-  @param[in]      Offset  The offset within the PCI configuration space for\r
-                          the PCI controller.\r
-  @param[in]      Count   The number of PCI configuration operations to\r
-                          perform. Bytes moved is Width size * Count,\r
-                          starting at Offset.\r
-\r
-  @param[in out]  Buffer  The destination buffer to store the results.\r
-\r
-  @retval  EFI_SUCCESS            The data was read from the PCI controller.\r
-  @retval  EFI_INVALID_PARAMETER  "Width" is invalid.\r
-  @retval  EFI_INVALID_PARAMETER  "Buffer" is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-PciIoPciRead (\r
-  IN     EFI_PCI_IO_PROTOCOL       *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT32                     Offset,\r
-  IN     UINTN                      Count,\r
-  IN OUT VOID                      *Buffer\r
-  )\r
-{\r
-  EFI_PCI_IO_PRIVATE_DATA *Private = EFI_PCI_IO_PRIVATE_DATA_FROM_THIS (This);\r
-  EFI_STATUS Status;\r
-\r
-  if ((Width < 0) || (Width >= EfiPciIoWidthMaximum) || (Buffer == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Status = PciRootBridgeIoMemRW (\r
-             (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH)Width,\r
-             Count,\r
-             TRUE,\r
-             (PTR)(UINTN)Buffer,\r
-             TRUE,\r
-             (PTR)(UINTN)(((UINT8 *)Private->ConfigSpace) + Offset)  //Fix me ConfigSpace\r
-             );\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Enable a PCI driver to write PCI controller registers in PCI configuration space.\r
-\r
-  @param[in]      This    A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
-  @param[in]      Width   Signifies the width of the memory operations.\r
-  @param[in]      Offset  The offset within the PCI configuration space for\r
-                          the PCI controller.\r
-  @param[in]      Count   The number of PCI configuration operations to\r
-                          perform. Bytes moved is Width size * Count,\r
-                          starting at Offset.\r
-\r
-  @param[in out]  Buffer  The source buffer to write data from.\r
-\r
-  @retval  EFI_SUCCESS            The data was read from the PCI controller.\r
-  @retval  EFI_INVALID_PARAMETER  "Width" is invalid.\r
-  @retval  EFI_INVALID_PARAMETER  "Buffer" is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-PciIoPciWrite (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT32                       Offset,\r
-  IN     UINTN                        Count,\r
-  IN OUT VOID                         *Buffer\r
-  )\r
-{\r
-  EFI_PCI_IO_PRIVATE_DATA *Private = EFI_PCI_IO_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  if ((Width < 0) || (Width >= EfiPciIoWidthMaximum) || (Buffer == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  return PciRootBridgeIoMemRW ((EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) Width,\r
-                               Count,\r
-                               TRUE,\r
-                               (PTR)(UINTN)(((UINT8 *)Private->ConfigSpace) + Offset),  //Fix me ConfigSpace\r
-                               TRUE,\r
-                               (PTR)(UINTN)Buffer\r
-                               );\r
-}\r
-\r
-EFI_STATUS\r
-PciIoCopyMem (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_WIDTH    Width,\r
-  IN     UINT8                        DestBarIndex,\r
-  IN     UINT64                       DestOffset,\r
-  IN     UINT8                        SrcBarIndex,\r
-  IN     UINT64                       SrcOffset,\r
-  IN     UINTN                        Count\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoMap (\r
-  IN EFI_PCI_IO_PROTOCOL                *This,\r
-  IN     EFI_PCI_IO_PROTOCOL_OPERATION  Operation,\r
-  IN     VOID                           *HostAddress,\r
-  IN OUT UINTN                          *NumberOfBytes,\r
-  OUT    EFI_PHYSICAL_ADDRESS           *DeviceAddress,\r
-  OUT    VOID                           **Mapping\r
-  )\r
-{\r
-  DMA_MAP_OPERATION   DmaOperation;\r
-\r
-  if (Operation == EfiPciIoOperationBusMasterRead) {\r
-    DmaOperation = MapOperationBusMasterRead;\r
-  } else if (Operation == EfiPciIoOperationBusMasterWrite) {\r
-    DmaOperation = MapOperationBusMasterWrite;\r
-  } else if (Operation == EfiPciIoOperationBusMasterCommonBuffer) {\r
-    DmaOperation = MapOperationBusMasterCommonBuffer;\r
-  } else {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  return DmaMap (DmaOperation, HostAddress, NumberOfBytes, DeviceAddress, Mapping);\r
-}\r
-\r
-EFI_STATUS\r
-PciIoUnmap (\r
-  IN EFI_PCI_IO_PROTOCOL           *This,\r
-  IN  VOID                         *Mapping\r
-  )\r
-{\r
-  return DmaUnmap (Mapping);\r
-}\r
-\r
-/**\r
-  Allocate pages that are suitable for an EfiPciIoOperationBusMasterCommonBuffer\r
-  mapping.\r
-\r
-  @param[in]   This         A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
-  @param[in]   Type         This parameter is not used and must be ignored.\r
-  @param[in]   MemoryType   The type of memory to allocate, EfiBootServicesData or\r
-                            EfiRuntimeServicesData.\r
-  @param[in]   Pages        The number of pages to allocate.\r
-  @param[out]  HostAddress  A pointer to store the base system memory address of\r
-                            the allocated range.\r
-  @param[in]   Attributes   The requested bit mask of attributes for the allocated\r
-                            range. Only the attributes,\r
-                            EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE and\r
-                            EFI_PCI_ATTRIBUTE_MEMORY_CACHED may be used with this\r
-                            function. If any other bits are set, then EFI_UNSUPPORTED\r
-                            is returned. This function ignores this bit mask.\r
-\r
-  @retval  EFI_SUCCESS            The requested memory pages were allocated.\r
-  @retval  EFI_INVALID_PARAMETER  HostAddress is NULL.\r
-  @retval  EFI_INVALID_PARAMETER  MemoryType is invalid.\r
-  @retval  EFI_UNSUPPORTED        Attributes is unsupported.\r
-  @retval  EFI_OUT_OF_RESOURCES   The memory pages could not be allocated.\r
-\r
-**/\r
-EFI_STATUS\r
-PciIoAllocateBuffer (\r
-  IN EFI_PCI_IO_PROTOCOL  *This,\r
-  IN  EFI_ALLOCATE_TYPE   Type,\r
-  IN  EFI_MEMORY_TYPE     MemoryType,\r
-  IN  UINTN               Pages,\r
-  OUT VOID                **HostAddress,\r
-  IN  UINT64              Attributes\r
-  )\r
-{\r
-  if (Attributes &\r
-      (~(EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE |\r
-         EFI_PCI_ATTRIBUTE_MEMORY_CACHED         ))) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  return DmaAllocateBuffer (MemoryType, Pages, HostAddress);\r
-}\r
-\r
-\r
-EFI_STATUS\r
-PciIoFreeBuffer (\r
-  IN EFI_PCI_IO_PROTOCOL           *This,\r
-  IN  UINTN                        Pages,\r
-  IN  VOID                         *HostAddress\r
-  )\r
-{\r
-  return DmaFreeBuffer (Pages, HostAddress);\r
-}\r
-\r
-\r
-EFI_STATUS\r
-PciIoFlush (\r
-  IN EFI_PCI_IO_PROTOCOL  *This\r
-  )\r
-{\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Retrieves this PCI controller's current PCI bus number, device number, and function number.\r
-\r
-  @param[in]   This            A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
-  @param[out]  SegmentNumber   The PCI controller's current PCI segment number.\r
-  @param[out]  BusNumber       The PCI controller's current PCI bus number.\r
-  @param[out]  DeviceNumber    The PCI controller's current PCI device number.\r
-  @param[out]  FunctionNumber  The PCI controller’s current PCI function number.\r
-\r
-  @retval  EFI_SUCCESS            The PCI controller location was returned.\r
-  @retval  EFI_INVALID_PARAMETER  At least one out of the four output parameters is\r
-                                  a NULL pointer.\r
-**/\r
-EFI_STATUS\r
-PciIoGetLocation (\r
-  IN   EFI_PCI_IO_PROTOCOL  *This,\r
-  OUT  UINTN                *SegmentNumber,\r
-  OUT  UINTN                *BusNumber,\r
-  OUT  UINTN                *DeviceNumber,\r
-  OUT  UINTN                *FunctionNumber\r
-  )\r
-{\r
-  EFI_PCI_IO_PRIVATE_DATA *Private = EFI_PCI_IO_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  if ((SegmentNumber == NULL) || (BusNumber      == NULL) ||\r
-      (DeviceNumber  == NULL) || (FunctionNumber == NULL)    ) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  *SegmentNumber  = Private->Segment;\r
-  *BusNumber      = 0xff;\r
-  *DeviceNumber   = 0;\r
-  *FunctionNumber = 0;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Performs an operation on the attributes that this PCI controller supports.\r
-\r
-  The operations include getting the set of supported attributes, retrieving\r
-  the current attributes, setting the current attributes, enabling attributes,\r
-  and disabling attributes.\r
-\r
-  @param[in]   This        A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
-  @param[in]   Operation   The operation to perform on the attributes for this\r
-                           PCI controller.\r
-  @param[in]   Attributes  The mask of attributes that are used for Set,\r
-                           Enable and Disable operations.\r
-  @param[out]  Result      A pointer to the result mask of attributes that are\r
-                           returned for the Get and Supported operations. This\r
-                           is an optional parameter that may be NULL for the\r
-                           Set, Enable, and Disable operations.\r
-\r
-  @retval  EFI_SUCCESS            The operation on the PCI controller's\r
-                                  attributes was completed. If the operation\r
-                                  was Get or Supported, then the attribute mask\r
-                                  is returned in Result.\r
-  @retval  EFI_INVALID_PARAMETER  Operation is greater than or equal to\r
-                                  EfiPciIoAttributeOperationMaximum.\r
-  @retval  EFI_INVALID_PARAMETER  Operation is Get and Result is NULL.\r
-  @retval  EFI_INVALID_PARAMETER  Operation is Supported and Result is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-PciIoAttributes (\r
-  IN EFI_PCI_IO_PROTOCOL                       *This,\r
-  IN  EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION  Operation,\r
-  IN  UINT64                                   Attributes,\r
-  OUT UINT64                                   *Result OPTIONAL\r
-  )\r
-{\r
-  switch (Operation) {\r
-  case EfiPciIoAttributeOperationGet:\r
-  case EfiPciIoAttributeOperationSupported:\r
-    if (Result == NULL) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-    //\r
-    // We are not a real PCI device so just say things we kind of do\r
-    //\r
-    *Result = EFI_PCI_DEVICE_ENABLE;\r
-    break;\r
-\r
-  case EfiPciIoAttributeOperationSet:\r
-  case EfiPciIoAttributeOperationEnable:\r
-  case EfiPciIoAttributeOperationDisable:\r
-    if (Attributes & (~EFI_PCI_DEVICE_ENABLE)) {\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-    // Since we are not a real PCI device no enable/set or disable operations exist.\r
-    return EFI_SUCCESS;\r
-\r
-  default:\r
-    return EFI_INVALID_PARAMETER;\r
-  };\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoGetBarAttributes (\r
-  IN EFI_PCI_IO_PROTOCOL             *This,\r
-  IN  UINT8                          BarIndex,\r
-  OUT UINT64                         *Supports, OPTIONAL\r
-  OUT VOID                           **Resources OPTIONAL\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_STATUS\r
-PciIoSetBarAttributes (\r
-  IN EFI_PCI_IO_PROTOCOL              *This,\r
-  IN     UINT64                       Attributes,\r
-  IN     UINT8                        BarIndex,\r
-  IN OUT UINT64                       *Offset,\r
-  IN OUT UINT64                       *Length\r
-  )\r
-{\r
-  ASSERT (FALSE);\r
-  return EFI_UNSUPPORTED;\r
-}\r
-\r
-EFI_PCI_IO_PROTOCOL PciIoTemplate =\r
-{\r
-  PciIoPollMem,\r
-  PciIoPollIo,\r
-  { PciIoMemRead, PciIoMemWrite },\r
-  { PciIoIoRead,  PciIoIoWrite },\r
-  { PciIoPciRead, PciIoPciWrite },\r
-  PciIoCopyMem,\r
-  PciIoMap,\r
-  PciIoUnmap,\r
-  PciIoAllocateBuffer,\r
-  PciIoFreeBuffer,\r
-  PciIoFlush,\r
-  PciIoGetLocation,\r
-  PciIoAttributes,\r
-  PciIoGetBarAttributes,\r
-  PciIoSetBarAttributes,\r
-  0,\r
-  0\r
-};\r
-\r
-EFI_STATUS\r
-PciInstallDevice (\r
-  IN UINTN            DeviceId,\r
-  IN PHYSICAL_ADDRESS MemoryStart,\r
-  IN UINT64           MemorySize,\r
-  IN UINTN            ClassCode1,\r
-  IN UINTN            ClassCode2,\r
-  IN UINTN            ClassCode3\r
-  )\r
-{\r
-  EFI_STATUS              Status;\r
-  EFI_HANDLE              Handle;\r
-  EFI_PCI_IO_PRIVATE_DATA *Private;\r
-\r
-  // Configure USB host\r
-  ConfigureUSBHost ();\r
-\r
-  // Create a private structure\r
-  Private = AllocatePool (sizeof (EFI_PCI_IO_PRIVATE_DATA));\r
-  if (Private == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    return Status;\r
-  }\r
-\r
-  Private->Signature              = EFI_PCI_IO_PRIVATE_DATA_SIGNATURE;  // Fill in signature\r
-  Private->RootBridge.Signature   = PCI_ROOT_BRIDGE_SIGNATURE;          // Fake Root Bridge structure needs a signature too\r
-  Private->RootBridge.MemoryStart = MemoryStart; // Get the USB capability register base\r
-  Private->Segment                = 0;                                  // Default to segment zero\r
-\r
-  // Calculate the total size of the USB controller (OHCI + EHCI).\r
-  Private->RootBridge.MemorySize = MemorySize; //CapabilityLength + (HOST_CONTROLLER_OPERATION_REG_SIZE + ((4 * PhysicalPorts) - 1));\r
-\r
-  // Create fake PCI config space: OHCI + EHCI\r
-  Private->ConfigSpace = AllocateZeroPool (sizeof (PCI_TYPE00));\r
-  if (Private->ConfigSpace == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    FreePool (Private);\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Configure PCI config space: OHCI + EHCI\r
-  //\r
-  Private->ConfigSpace->Hdr.VendorId = 0xFFFF; // Invalid vendor Id as it is not an actual device.\r
-  Private->ConfigSpace->Hdr.DeviceId = 0x0000; // Not relevant as the vendor id is not valid.\r
-  Private->ConfigSpace->Hdr.ClassCode[0] = ClassCode1;\r
-  Private->ConfigSpace->Hdr.ClassCode[1] = ClassCode2;\r
-  Private->ConfigSpace->Hdr.ClassCode[2] = ClassCode3;\r
-  Private->ConfigSpace->Device.Bar[0] = MemoryStart;\r
-\r
-  Handle = NULL;\r
-\r
-  // Unique device path.\r
-  CopyMem (&Private->DevicePath, &PciIoDevicePathTemplate, sizeof (PciIoDevicePathTemplate));\r
-  Private->DevicePath.AcpiDevicePath.UID = 1; // Use '1' to differentiate from PLDA root complex\r
-  Private->DevicePath.PciDevicePath.Device = DeviceId;\r
-\r
-  // Copy protocol structure\r
-  CopyMem (&Private->PciIoProtocol, &PciIoTemplate, sizeof (PciIoTemplate));\r
-\r
-  Status = gBS->InstallMultipleProtocolInterfaces (&Handle,\r
-                                                  &gEfiPciIoProtocolGuid,       &Private->PciIoProtocol,\r
-                                                  &gEfiDevicePathProtocolGuid,  &Private->DevicePath,\r
-                                                  NULL);\r
-  if (EFI_ERROR (Status)) {\r
-    DEBUG ((EFI_D_ERROR, "PciEmulationEntryPoint InstallMultipleProtocolInterfaces () failed.\n"));\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-EFI_STATUS\r
-PciEmulationEntryPoint (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS              Status;\r
-\r
-  Status = PciInstallDevice (0, FixedPcdGet32 (PcdSynopsysUsbOhciBaseAddress), SIZE_64KB, PCI_IF_OHCI, PCI_CLASS_SERIAL_USB, PCI_CLASS_SERIAL);\r
-  if (EFI_ERROR (Status)) {\r
-    DEBUG ((EFI_D_ERROR, "PciEmulation: failed to install OHCI device.\n"));\r
-  }\r
-\r
-  Status = PciInstallDevice (1, FixedPcdGet32 (PcdSynopsysUsbEhciBaseAddress), SIZE_64KB, PCI_IF_EHCI, PCI_CLASS_SERIAL_USB, PCI_CLASS_SERIAL);\r
-  if (EFI_ERROR (Status)) {\r
-    DEBUG ((EFI_D_ERROR, "PciEmulation: failed to install EHCI device.\n"));\r
-  }\r
-\r
-  return Status;\r
-}\r
diff --git a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.h b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciEmulation.h
deleted file mode 100644 (file)
index de2855d..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-/** @file\r
-\r
-  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-  Copyright (c) 2013 - 2014, ARM Ltd. All rights reserved.<BR>\r
-\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
-**/\r
-\r
-#ifndef _PCI_ROOT_BRIDGE_H_\r
-#define _PCI_ROOT_BRIDGE_H_\r
-\r
-#include <PiDxe.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DxeServicesTableLib.h>\r
-#include <Library/IoLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/PciLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/DmaLib.h>\r
-\r
-#include <Protocol/EmbeddedExternalDevice.h>\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/PciIo.h>\r
-#include <Protocol/PciRootBridgeIo.h>\r
-#include <Protocol/PciHostBridgeResourceAllocation.h>\r
-\r
-#include <IndustryStandard/Pci23.h>\r
-\r
-#include "ArmJunoDxeInternal.h"\r
-\r
-#define EFI_RESOURCE_NONEXISTENT  0xFFFFFFFFFFFFFFFFULL\r
-#define EFI_RESOURCE_LESS         0xFFFFFFFFFFFFFFFEULL\r
-#define EFI_RESOURCE_SATISFIED    0x0000000000000000ULL\r
-\r
-\r
-typedef struct {\r
-  ACPI_HID_DEVICE_PATH      AcpiDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  EndDevicePath;\r
-} EFI_PCI_ROOT_BRIDGE_DEVICE_PATH;\r
-\r
-\r
-#define ACPI_CONFIG_IO    0\r
-#define ACPI_CONFIG_MMIO  1\r
-#define ACPI_CONFIG_BUS   2\r
-\r
-typedef struct {\r
-  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR Desc[3];\r
-  EFI_ACPI_END_TAG_DESCRIPTOR       EndDesc;\r
-} ACPI_CONFIG_INFO;\r
-\r
-\r
-#define PCI_ROOT_BRIDGE_SIGNATURE SIGNATURE_32 ('P', 'c', 'i', 'F')\r
-\r
-typedef struct {\r
-  UINT32                                            Signature;\r
-  EFI_HANDLE                                        Handle;\r
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL                   Io;\r
-  EFI_PCI_ROOT_BRIDGE_DEVICE_PATH                   DevicePath;\r
-\r
-  UINT8   StartBus;\r
-  UINT8   EndBus;\r
-  UINT16  Type;\r
-  UINT32  MemoryStart;\r
-  UINT32  MemorySize;\r
-  UINTN   IoOffset;\r
-  UINT32  IoStart;\r
-  UINT32  IoSize;\r
-  UINT64  PciAttributes;\r
-\r
-  ACPI_CONFIG_INFO  *Config;\r
-\r
-} PCI_ROOT_BRIDGE;\r
-\r
-\r
-#define INSTANCE_FROM_PCI_ROOT_BRIDGE_IO_THIS(a) CR (a, PCI_ROOT_BRIDGE, Io, PCI_ROOT_BRIDGE_SIGNATURE)\r
-\r
-\r
-typedef union {\r
-  UINT8   volatile  *Buffer;\r
-  UINT8   volatile  *Ui8;\r
-  UINT16  volatile  *Ui16;\r
-  UINT32  volatile  *Ui32;\r
-  UINT64  volatile  *Ui64;\r
-  UINTN   volatile  Ui;\r
-} PTR;\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPollMem (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN  UINT64                                 Address,\r
-  IN  UINT64                                 Mask,\r
-  IN  UINT64                                 Value,\r
-  IN  UINT64                                 Delay,\r
-  OUT UINT64                                 *Result\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPollIo (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN  UINT64                                 Address,\r
-  IN  UINT64                                 Mask,\r
-  IN  UINT64                                 Value,\r
-  IN  UINT64                                 Delay,\r
-  OUT UINT64                                 *Result\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMemRead (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMemWrite (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoIoRead (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 UserAddress,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *UserBuffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoIoWrite (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 UserAddress,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *UserBuffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoCopyMem (\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN UINT64                                 DestAddress,\r
-  IN UINT64                                 SrcAddress,\r
-  IN UINTN                                  Count\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPciRead (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPciWrite (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMap (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL            *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION  Operation,\r
-  IN     VOID                                       *HostAddress,\r
-  IN OUT UINTN                                      *NumberOfBytes,\r
-  OUT    EFI_PHYSICAL_ADDRESS                       *DeviceAddress,\r
-  OUT    VOID                                       **Mapping\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoUnmap (\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  IN VOID                             *Mapping\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoAllocateBuffer (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  IN  EFI_ALLOCATE_TYPE                Type,\r
-  IN  EFI_MEMORY_TYPE                  MemoryType,\r
-  IN  UINTN                            Pages,\r
-  OUT VOID                             **HostAddress,\r
-  IN  UINT64                           Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoFreeBuffer (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  IN  UINTN                            Pages,\r
-  OUT VOID                             *HostAddress\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoFlush (\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoGetAttributes (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  OUT UINT64                           *Supported,\r
-  OUT UINT64                           *Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoSetAttributes (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  IN     UINT64                           Attributes,\r
-  IN OUT UINT64                           *ResourceBase,\r
-  IN OUT UINT64                           *ResourceLength\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoConfiguration (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *This,\r
-  OUT VOID                             **Resources\r
-  );\r
-\r
-//\r
-// Private Function Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMemRW (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN  UINTN                                  Count,\r
-  IN  BOOLEAN                                InStrideFlag,\r
-  IN  PTR                                    In,\r
-  IN  BOOLEAN                                OutStrideFlag,\r
-  OUT PTR                                    Out\r
-  );\r
-\r
-BOOLEAN\r
-PciIoMemAddressValid (\r
-  IN EFI_PCI_IO_PROTOCOL  *This,\r
-  IN UINT64               Address\r
-  );\r
-\r
-EFI_STATUS\r
-EmulatePciIoForEhci (\r
-  INTN    MvPciIfMaxIf\r
-  );\r
-\r
-#endif\r
diff --git a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciRootBridgeIo.c b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/PciRootBridgeIo.c
deleted file mode 100644 (file)
index f1eacef..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-/** @file\r
-\r
-  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-\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
-**/\r
-\r
-#include "PciEmulation.h"\r
-\r
-BOOLEAN\r
-PciRootBridgeMemAddressValid (\r
-  IN PCI_ROOT_BRIDGE  *Private,\r
-  IN UINT64           Address\r
-  )\r
-{\r
-  if ((Address >= Private->MemoryStart) && (Address < (Private->MemoryStart + Private->MemorySize))) {\r
-    return TRUE;\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-PciRootBridgeIoMemRW (\r
-  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN  UINTN                                  Count,\r
-  IN  BOOLEAN                                InStrideFlag,\r
-  IN  PTR                                    In,\r
-  IN  BOOLEAN                                OutStrideFlag,\r
-  OUT PTR                                    Out\r
-  )\r
-{\r
-  UINTN  Stride;\r
-  UINTN  InStride;\r
-  UINTN  OutStride;\r
-\r
-  Width     = (EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
-  Stride    = (UINTN)1 << Width;\r
-  InStride  = InStrideFlag  ? Stride : 0;\r
-  OutStride = OutStrideFlag ? Stride : 0;\r
-\r
-  //\r
-  // Loop for each iteration and move the data\r
-  //\r
-  switch (Width) {\r
-  case EfiPciWidthUint8:\r
-    for (;Count > 0; Count--, In.Buffer += InStride, Out.Buffer += OutStride) {\r
-      *In.Ui8 = *Out.Ui8;\r
-    }\r
-    break;\r
-  case EfiPciWidthUint16:\r
-    for (;Count > 0; Count--, In.Buffer += InStride, Out.Buffer += OutStride) {\r
-      *In.Ui16 = *Out.Ui16;\r
-    }\r
-    break;\r
-  case EfiPciWidthUint32:\r
-    for (;Count > 0; Count--, In.Buffer += InStride, Out.Buffer += OutStride) {\r
-      *In.Ui32 = *Out.Ui32;\r
-    }\r
-    break;\r
-  default:\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-PciRootBridgeIoPciRW (\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN BOOLEAN                                Write,\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN UINT64                                 UserAddress,\r
-  IN UINTN                                  Count,\r
-  IN OUT VOID                               *UserBuffer\r
-  )\r
-{\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space.\r
-\r
-  @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
-  @param  Width                 Signifies the width of the memory operations.\r
-  @param  Address               The base address of the memory operations.\r
-  @param  Count                 The number of memory operations to perform.\r
-  @param  Buffer                For read operations, the destination buffer to store the results. For write\r
-                                operations, the source buffer to write data from.\r
-\r
-  @retval EFI_SUCCESS           The data was read from or written to the PCI root bridge.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMemRead (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  )\r
-{\r
-  PCI_ROOT_BRIDGE   *Private;\r
-  UINTN             AlignMask;\r
-  PTR               In;\r
-  PTR               Out;\r
-\r
-  if ( Buffer == NULL ) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Private = INSTANCE_FROM_PCI_ROOT_BRIDGE_IO_THIS (This);\r
-\r
-  if (!PciRootBridgeMemAddressValid (Private, Address)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  AlignMask = (1 << (Width & 0x03)) - 1;\r
-  if (Address & AlignMask) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  In.Buffer  = Buffer;\r
-  Out.Buffer = (VOID *)(UINTN) Address;\r
-\r
-  switch (Width) {\r
-  case EfiPciWidthUint8:\r
-  case EfiPciWidthUint16:\r
-  case EfiPciWidthUint32:\r
-  case EfiPciWidthUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, TRUE, In, TRUE, Out);\r
-\r
-  case EfiPciWidthFifoUint8:\r
-  case EfiPciWidthFifoUint16:\r
-  case EfiPciWidthFifoUint32:\r
-  case EfiPciWidthFifoUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, TRUE, In, FALSE, Out);\r
-\r
-  case EfiPciWidthFillUint8:\r
-  case EfiPciWidthFillUint16:\r
-  case EfiPciWidthFillUint32:\r
-  case EfiPciWidthFillUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, FALSE, In, TRUE, Out);\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return EFI_INVALID_PARAMETER;\r
-}\r
-\r
-/**\r
-  Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space.\r
-\r
-  @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
-  @param  Width                 Signifies the width of the memory operations.\r
-  @param  Address               The base address of the memory operations.\r
-  @param  Count                 The number of memory operations to perform.\r
-  @param  Buffer                For read operations, the destination buffer to store the results. For write\r
-                                operations, the source buffer to write data from.\r
-\r
-  @retval EFI_SUCCESS           The data was read from or written to the PCI root bridge.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoMemWrite (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  )\r
-{\r
-  PCI_ROOT_BRIDGE *Private;\r
-  UINTN  AlignMask;\r
-  PTR    In;\r
-  PTR    Out;\r
-\r
-  if ( Buffer == NULL ) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Private = INSTANCE_FROM_PCI_ROOT_BRIDGE_IO_THIS (This);\r
-\r
-  if (!PciRootBridgeMemAddressValid (Private, Address)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  AlignMask = (1 << (Width & 0x03)) - 1;\r
-  if (Address & AlignMask) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  In.Buffer  = (VOID *)(UINTN) Address;\r
-  Out.Buffer = Buffer;\r
-\r
-  switch (Width) {\r
-  case EfiPciWidthUint8:\r
-  case EfiPciWidthUint16:\r
-  case EfiPciWidthUint32:\r
-  case EfiPciWidthUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, TRUE, In, TRUE, Out);\r
-\r
-  case EfiPciWidthFifoUint8:\r
-  case EfiPciWidthFifoUint16:\r
-  case EfiPciWidthFifoUint32:\r
-  case EfiPciWidthFifoUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, FALSE, In, TRUE, Out);\r
-\r
-  case EfiPciWidthFillUint8:\r
-  case EfiPciWidthFillUint16:\r
-  case EfiPciWidthFillUint32:\r
-  case EfiPciWidthFillUint64:\r
-    return PciRootBridgeIoMemRW (Width, Count, TRUE, In, FALSE, Out);\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return EFI_INVALID_PARAMETER;\r
-}\r
-\r
-/**\r
-  Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space.\r
-\r
-  @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
-  @param  Width                 Signifies the width of the memory operations.\r
-  @param  Address               The base address of the memory operations.\r
-  @param  Count                 The number of memory operations to perform.\r
-  @param  Buffer                For read operations, the destination buffer to store the results. For write\r
-                                operations, the source buffer to write data from.\r
-\r
-  @retval EFI_SUCCESS           The data was read from or written to the PCI root bridge.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPciRead (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  )\r
-{\r
-  if (Buffer == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  return PciRootBridgeIoPciRW (This, FALSE, Width, Address, Count, Buffer);\r
-}\r
-\r
-/**\r
-  Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space.\r
-\r
-  @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
-  @param  Width                 Signifies the width of the memory operations.\r
-  @param  Address               The base address of the memory operations.\r
-  @param  Count                 The number of memory operations to perform.\r
-  @param  Buffer                For read operations, the destination buffer to store the results. For write\r
-                                operations, the source buffer to write data from.\r
-\r
-  @retval EFI_SUCCESS           The data was read from or written to the PCI root bridge.\r
-  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.\r
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PciRootBridgeIoPciWrite (\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,\r
-  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,\r
-  IN     UINT64                                 Address,\r
-  IN     UINTN                                  Count,\r
-  IN OUT VOID                                   *Buffer\r
-  )\r
-{\r
-  if (Buffer == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  return PciRootBridgeIoPciRW (This, TRUE, Width, Address, Count, Buffer);\r
-}\r