* [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure
@ 2016-12-16 2:25 Dandan Bi
2016-12-16 2:25 ` [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Dandan Bi
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Dandan Bi @ 2016-12-16 2:25 UTC (permalink / raw)
To: edk2-devel; +Cc: Ard Biesheuvel, Ruiyu Ni
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
.../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
index ce73a77..f9b13a5 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
@@ -555,10 +555,11 @@ NonCoherentPciIoFreeBuffer (
BOOLEAN Found;
Dev = NON_DISCOVERABLE_PCI_DEVICE_FROM_PCI_IO(This);
Found = FALSE;
+ Alloc = NULL;
//
// Find the uncached allocation list entry associated
// with this allocation
//
--
1.9.5.msysgit.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions
2016-12-16 2:25 [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Dandan Bi
@ 2016-12-16 2:25 ` Dandan Bi
2016-12-16 4:59 ` Ni, Ruiyu
2016-12-16 2:25 ` [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule Dandan Bi
2016-12-16 4:59 ` [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Ni, Ruiyu
2 siblings, 1 reply; 6+ messages in thread
From: Dandan Bi @ 2016-12-16 2:25 UTC (permalink / raw)
To: edk2-devel; +Cc: Ard Biesheuvel, Ruiyu Ni
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
.../NonDiscoverablePciDeviceDxe/ComponentName.c | 47 +++
.../NonDiscoverablePciDeviceDxe.c | 50 ++-
.../NonDiscoverablePciDeviceDxe.inf | 18 +-
.../NonDiscoverablePciDeviceIo.c | 362 ++++++++++++++++++++-
.../NonDiscoverablePciDeviceIo.h | 6 +
5 files changed, 469 insertions(+), 14 deletions(-)
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
index 6e51d00..0e6ebec 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
@@ -28,10 +28,31 @@ EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {
{ NULL, NULL }
};
EFI_COMPONENT_NAME_PROTOCOL gComponentName;
+/**
+ Retrieves a Unicode string that is the user readable name of the UEFI Driver.
+
+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
+ @param Language A pointer to a three character ISO 639-2 language identifier.
+ This is the language of the driver name that that the caller
+ is requesting, and it must match one of the languages specified
+ in SupportedLanguages. The number of languages supported by a
+ driver is up to the driver writer.
+ @param DriverName A pointer to the Unicode string to return. This Unicode string
+ is the name of the driver specified by This in the language
+ specified by Language.
+
+ @retval EFI_SUCCESS The Unicode string for the Driver specified by This
+ and the language specified by Language was returned
+ in DriverName.
+ @retval EFI_INVALID_PARAMETER Language is NULL.
+ @retval EFI_INVALID_PARAMETER DriverName is NULL.
+ @retval EFI_UNSUPPORTED The driver specified by This does not support the
+ language specified by Language.
+**/
STATIC
EFI_STATUS
EFIAPI
NonDiscoverablePciGetDriverName (
IN EFI_COMPONENT_NAME_PROTOCOL *This,
@@ -46,10 +67,36 @@ NonDiscoverablePciGetDriverName (
DriverName,
(BOOLEAN)(This == &gComponentName) // Iso639Language
);
}
+/**
+ Retrieves a Unicode string that is the user readable name of the controller
+ that is being managed by an UEFI Driver.
+
+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
+ @param DeviceHandle The handle of a controller that the driver specified by
+ This is managing. This handle specifies the controller
+ whose name is to be returned.
+ @param ChildHandle The handle of the child controller to retrieve the name
+ of. This is an optional parameter that may be NULL. It
+ will be NULL for device drivers. It will also be NULL
+ for a bus drivers that wish to retrieve the name of the
+ bus controller. It will not be NULL for a bus driver
+ that wishes to retrieve the name of a child controller.
+ @param Language A pointer to a three character ISO 639-2 language
+ identifier. This is the language of the controller name
+ that that the caller is requesting, and it must match one
+ of the languages specified in SupportedLanguages. The
+ number of languages supported by a driver is up to the
+ driver writer.
+ @param ControllerName A pointer to the Unicode string to return. This Unicode
+ string is the name of the controller specified by
+ ControllerHandle and ChildHandle in the language
+ specified by Language from the point of view of the
+ driver specified by This.
+**/
STATIC
EFI_STATUS
EFIAPI
NonDiscoverablePciGetDeviceName (
IN EFI_COMPONENT_NAME_PROTOCOL *This,
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
index 0fcf2b2..876e99f 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
@@ -47,10 +47,23 @@ SupportedNonDiscoverableDevices [] = {
// - 5.1.3.4 OpenProtocol() and CloseProtocol()
// - UEFI Spec 2.3.1 + Errata C
// - 6.3 Protocol Handler Services
//
+/**
+ Supported function of Driver Binding protocol for this driver.
+ Test to see if this driver supports ControllerHandle.
+
+ @param This Protocol instance pointer.
+ @param DeviceHandle Handle of device to test.
+ @param RemainingDevicePath A pointer to the device path.
+ it should be ignored by device driver.
+
+ @retval EFI_SUCCESS This driver supports this device.
+ @retval other This driver does not support this device.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonDiscoverablePciDeviceSupported (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
@@ -101,10 +114,23 @@ CloseProtocol:
This->DriverBindingHandle, DeviceHandle);
return Status;
}
+/**
+ This routine is called right after the .Supported() called and
+ Start this driver on ControllerHandle.
+
+ @param This Protocol instance pointer.
+ @param DeviceHandle Handle of device to bind driver to.
+ @param RemainingDevicePath A pointer to the device path.
+ it should be ignored by device driver.
+
+ @retval EFI_SUCCESS This driver is added to this device.
+ @retval other Some error occurs when binding this driver to this device.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonDiscoverablePciDeviceStart (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
@@ -151,11 +177,22 @@ FreeDev:
FreePool (Dev);
return Status;
}
+/**
+ Stop this driver on ControllerHandle.
+
+ @param This Protocol instance pointer.
+ @param DeviceHandle Handle of device to stop driver on.
+ @param NumberOfChildren Not used.
+ @param ChildHandleBuffer Not used.
+ @retval EFI_SUCCESS This driver is removed from this device.
+ @retval other Some error occurs when removing this driver from this device.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonDiscoverablePciDeviceStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
@@ -207,13 +244,20 @@ STATIC EFI_DRIVER_BINDING_PROTOCOL gDriverBinding = {
0x10, // Version, must be in [0x10 .. 0xFFFFFFEF] for IHV-developed drivers
NULL,
NULL
};
-//
-// Entry point of this driver.
-//
+/**
+ Entry point of this driver.
+
+ @param ImageHandle Image handle this driver.
+ @param SystemTable Pointer to the System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+ @retval other Some error occurred when executing this entry point.
+
+**/
EFI_STATUS
EFIAPI
NonDiscoverablePciDeviceDxeEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
index 5faa894..ac551a8 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
@@ -1,6 +1,8 @@
## @file
+# PCI I/O driver for non-discoverable devices.
+#
# Copyright (C) 2016, Linaro Ltd.
#
# 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
@@ -42,13 +44,13 @@ [Protocols]
gEfiPciIoProtocolGuid ## BY_START
gEdkiiNonDiscoverableDeviceProtocolGuid ## TO_START
gEfiCpuArchProtocolGuid ## CONSUMES
[Guids]
- gEdkiiNonDiscoverableAhciDeviceGuid
- gEdkiiNonDiscoverableEhciDeviceGuid
- gEdkiiNonDiscoverableNvmeDeviceGuid
- gEdkiiNonDiscoverableOhciDeviceGuid
- gEdkiiNonDiscoverableSdhciDeviceGuid
- gEdkiiNonDiscoverableUfsDeviceGuid
- gEdkiiNonDiscoverableUhciDeviceGuid
- gEdkiiNonDiscoverableXhciDeviceGuid
+ gEdkiiNonDiscoverableAhciDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableEhciDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableNvmeDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableOhciDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableSdhciDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableUfsDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableUhciDeviceGuid ## CONSUMES ## GUID
+ gEdkiiNonDiscoverableXhciDeviceGuid ## CONSUMES ## GUID
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
index f9b13a5..1ffbdfa 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
@@ -26,13 +26,18 @@ typedef struct {
VOID *HostAddress;
EFI_PCI_IO_PROTOCOL_OPERATION Operation;
UINTN NumberOfBytes;
} NON_DISCOVERABLE_PCI_DEVICE_MAP_INFO;
-//
-// Get the resource associated with BAR number 'BarIndex'.
-//
+/**
+ Get the resource associated with BAR number 'BarIndex'.
+
+ @param Dev Point to the NON_DISCOVERABLE_PCI_DEVICE instance.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory operation to perform.
+ @param Descriptor Points to the address space descriptor
+**/
STATIC
EFI_STATUS
GetBarResource (
IN NON_DISCOVERABLE_PCI_DEVICE *Dev,
IN UINT8 BarIndex,
@@ -59,10 +64,25 @@ GetBarResource (
BarIndex -= 1;
}
return EFI_NOT_FOUND;
}
+/**
+ Reads from the memory space of a PCI controller. Returns either when the polling exit criteria is
+ satisfied or after a defined duration.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory operation to perform.
+ @param Offset The offset within the selected BAR to start the memory operation.
+ @param Mask Mask used for the polling criteria.
+ @param Value The comparison value used for the polling exit criteria.
+ @param Delay The number of 100 ns units to poll.
+ @param Result Pointer to the last value read from the memory location.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoPollMem (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -77,10 +97,25 @@ PciIoPollMem (
{
ASSERT (FALSE);
return EFI_UNSUPPORTED;
}
+/**
+ Reads from the memory space of a PCI controller. Returns either when the polling exit criteria is
+ satisfied or after a defined duration.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory operation to perform.
+ @param Offset The offset within the selected BAR to start the memory operation.
+ @param Mask Mask used for the polling criteria.
+ @param Value The comparison value used for the polling exit criteria.
+ @param Delay The number of 100 ns units to poll.
+ @param Result Pointer to the last value read from the memory location.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoPollIo (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -95,10 +130,26 @@ PciIoPollIo (
{
ASSERT (FALSE);
return EFI_UNSUPPORTED;
}
+/**
+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
+
+ @param Width Signifies the width of the memory or I/O operations.
+ @param Count The number of memory or I/O operations to perform.
+ @param DstStride The stride of the destination buffer.
+ @param Dst For read operations, the destination buffer to store the results. For write
+ operations, the destination buffer to write data to.
+ @param SrcStride The stride of the source buffer.
+ @param Src For read operations, the source buffer to read data from. For write
+ operations, the source buffer to write data from.
+
+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoMemRW (
IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
@@ -146,10 +197,30 @@ PciIoMemRW (
}
return EFI_SUCCESS;
}
+/**
+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory or I/O operation to perform.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from.
+
+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
+ valid for the PCI BAR specified by BarIndex.
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoMemRead (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -213,10 +284,30 @@ PciIoMemRead (
break;
}
return EFI_INVALID_PARAMETER;
}
+/**
+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory or I/O operation to perform.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from.
+
+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
+ valid for the PCI BAR specified by BarIndex.
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoMemWrite (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -280,10 +371,23 @@ PciIoMemWrite (
break;
}
return EFI_INVALID_PARAMETER;
}
+/**
+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory or I/O operation to perform.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoIoRead (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -296,10 +400,23 @@ PciIoIoRead (
{
ASSERT (FALSE);
return EFI_UNSUPPORTED;
}
+/**
+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for the memory or I/O operation to perform.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoIoWrite (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -312,10 +429,21 @@ PciIoIoWrite (
{
ASSERT (FALSE);
return EFI_UNSUPPORTED;
}
+/**
+ Enable a PCI driver to access PCI config space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoPciRead (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -348,10 +476,26 @@ PciIoPciRead (
Count -= Length >> ((UINTN)Width & 0x3);
}
return PciIoMemRW (Width, Count, 1, Buffer, 1, Address);
}
+/**
+ Enable a PCI driver to access PCI config space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory or I/O operations.
+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
+ @param Count The number of memory or I/O operations to perform.
+ @param Buffer For read operations, the destination buffer to store the results. For write
+ operations, the source buffer to write data from
+
+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
+ valid for the PCI BAR specified by BarIndex.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoPciWrite (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -376,10 +520,28 @@ PciIoPciWrite (
}
return PciIoMemRW (Width, Count, 1, Address, 1, Buffer);
}
+/**
+ Enables a PCI driver to copy one region of PCI memory space to another region of PCI
+ memory space.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Width Signifies the width of the memory operations.
+ @param DestBarIndex The BAR index in the standard PCI Configuration header to use as the
+ base address for the memory operation to perform.
+ @param DestOffset The destination offset within the BAR specified by DestBarIndex to
+ start the memory writes for the copy operation.
+ @param SrcBarIndex The BAR index in the standard PCI Configuration header to use as the
+ base address for the memory operation to perform.
+ @param SrcOffset The source offset within the BAR specified by SrcBarIndex to start
+ the memory reads for the copy operation.
+ @param Count The number of memory operations to perform. Bytes moved is Width
+ size * Count, starting at DestOffset and SrcOffset.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoCopyMem (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -393,10 +555,29 @@ PciIoCopyMem (
{
ASSERT (FALSE);
return EFI_UNSUPPORTED;
}
+/**
+ Provides the PCI controller-specific addresses needed to access system memory.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Operation Indicates if the bus master is going to read or write to system memory.
+ @param HostAddress The system memory address to map to the PCI controller.
+ @param NumberOfBytes On input the number of bytes to map. On output the number of bytes
+ that were mapped.
+ @param DeviceAddress The resulting map address for the bus master PCI controller to use to
+ access the hosts HostAddress.
+ @param Mapping A resulting value to pass to Unmap().
+
+ @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
+ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
+ @retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
+
+**/
STATIC
EFI_STATUS
EFIAPI
CoherentPciIoMap (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -459,10 +640,19 @@ CoherentPciIoMap (
*Mapping = NULL;
}
return EFI_SUCCESS;
}
+/**
+ Completes the Map() operation and releases any corresponding resources.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Mapping The mapping value returned from Map().
+
+ @retval EFI_SUCCESS The range was unmapped.
+
+**/
STATIC
EFI_STATUS
EFIAPI
CoherentPciIoUnmap (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -482,10 +672,29 @@ CoherentPciIoUnmap (
FreePool (MapInfo);
}
return EFI_SUCCESS;
}
+/**
+ Allocates pages.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Type This parameter is not used and must be ignored.
+ @param MemoryType The type of memory to allocate, EfiBootServicesData or
+ EfiRuntimeServicesData.
+ @param Pages The number of pages to allocate.
+ @param HostAddress A pointer to store the base system memory address of the
+ allocated range.
+ @param Attributes The requested bit mask of attributes for the allocated range.
+
+ @retval EFI_SUCCESS The requested memory pages were allocated.
+ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are
+ MEMORY_WRITE_COMBINE and MEMORY_CACHED.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
+
+**/
STATIC
EFI_STATUS
EFIAPI
CoherentPciIoAllocateBuffer (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -524,10 +733,20 @@ CoherentPciIoAllocateBuffer (
*HostAddress = (VOID *)(UINTN)AllocAddress;
}
return Status;
}
+/**
+ Frees memory that was allocated in function CoherentPciIoAllocateBuffer ().
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Pages The number of pages to free.
+ @param HostAddress The base system memory address of the allocated range.
+
+ @retval EFI_SUCCESS The requested memory pages were freed.
+
+**/
STATIC
EFI_STATUS
EFIAPI
CoherentPciIoFreeBuffer (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -537,10 +756,21 @@ CoherentPciIoFreeBuffer (
{
FreePages (HostAddress, Pages);
return EFI_SUCCESS;
}
+/**
+ Frees memory that was allocated in function NonCoherentPciIoAllocateBuffer ().
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Pages The number of pages to free.
+ @param HostAddress The base system memory address of the allocated range.
+
+ @retval EFI_SUCCESS The requested memory pages were freed.
+ @retval others The operation contain some errors.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonCoherentPciIoFreeBuffer (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -602,10 +832,29 @@ NonCoherentPciIoFreeBuffer (
FreeAlloc:
FreePool (Alloc);
return Status;
}
+/**
+ Allocates pages.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Type This parameter is not used and must be ignored.
+ @param MemoryType The type of memory to allocate, EfiBootServicesData or
+ EfiRuntimeServicesData.
+ @param Pages The number of pages to allocate.
+ @param HostAddress A pointer to store the base system memory address of the
+ allocated range.
+ @param Attributes The requested bit mask of attributes for the allocated range.
+
+ @retval EFI_SUCCESS The requested memory pages were allocated.
+ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are
+ MEMORY_WRITE_COMBINE and MEMORY_CACHED.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonCoherentPciIoAllocateBuffer (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -700,10 +949,29 @@ RemoveList:
FreeBuffer:
CoherentPciIoFreeBuffer (This, Pages, AllocAddress);
return Status;
}
+/**
+ Provides the PCI controller-specific addresses needed to access system memory.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Operation Indicates if the bus master is going to read or write to system memory.
+ @param HostAddress The system memory address to map to the PCI controller.
+ @param NumberOfBytes On input the number of bytes to map. On output the number of bytes
+ that were mapped.
+ @param DeviceAddress The resulting map address for the bus master PCI controller to use to
+ access the hosts HostAddress.
+ @param Mapping A resulting value to pass to Unmap().
+
+ @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
+ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
+ @retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonCoherentPciIoMap (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -814,10 +1082,19 @@ FreeMapInfo:
FreePool (MapInfo);
return Status;
}
+/**
+ Completes the Map() operation and releases any corresponding resources.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Mapping The mapping value returned from Map().
+
+ @retval EFI_SUCCESS The range was unmapped.
+
+**/
STATIC
EFI_STATUS
EFIAPI
NonCoherentPciIoUnmap (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -857,20 +1134,39 @@ NonCoherentPciIoUnmap (
}
FreePool (MapInfo);
return EFI_SUCCESS;
}
+/**
+ Flushes all PCI posted write transactions from a PCI host bridge to system memory.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoFlush (
IN EFI_PCI_IO_PROTOCOL *This
)
{
return EFI_SUCCESS;
}
+/**
+ Retrieves this PCI controller's current PCI bus number, device number, and function number.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param SegmentNumber The PCI controller's current PCI segment number.
+ @param BusNumber The PCI controller's current PCI bus number.
+ @param DeviceNumber The PCI controller's current PCI device number.
+ @param FunctionNumber The PCI controller's current PCI function number.
+
+ @retval EFI_SUCCESS The PCI controller location was returned.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoGetLocation (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -893,10 +1189,29 @@ PciIoGetLocation (
*FunctionNumber = 0;
return EFI_SUCCESS;
}
+/**
+ Performs an operation on the attributes that this PCI controller supports. The operations include
+ getting the set of supported attributes, retrieving the current attributes, setting the current
+ attributes, enabling attributes, and disabling attributes.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Operation The operation to perform on the attributes for this PCI controller.
+ @param Attributes The mask of attributes that are used for Set, Enable, and Disable
+ operations.
+ @param Result A pointer to the result mask of attributes that are returned for the Get
+ and Supported operations.
+
+ @retval EFI_SUCCESS The operation on the PCI controller's attributes was completed.
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_UNSUPPORTED one or more of the bits set in
+ Attributes are not supported by this PCI controller or one of
+ its parent bridges when Operation is Set, Enable or Disable.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoAttributes (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -950,10 +1265,32 @@ PciIoAttributes (
Dev->Enabled = TRUE;
}
return EFI_SUCCESS;
}
+/**
+ Gets the attributes that this PCI controller supports setting on a BAR using
+ SetBarAttributes(), and retrieves the list of resource descriptors for a BAR.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for resource range. The legal range for this field is 0..5.
+ @param Supports A pointer to the mask of attributes that this PCI controller supports
+ setting for this BAR with SetBarAttributes().
+ @param Resources A pointer to the ACPI 2.0 resource descriptors that describe the current
+ configuration of this BAR of the PCI controller.
+
+ @retval EFI_SUCCESS If Supports is not NULL, then the attributes that the PCI
+ controller supports are returned in Supports. If Resources
+ is not NULL, then the ACPI 2.0 resource descriptors that the PCI
+ controller is currently using are returned in Resources.
+ @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL.
+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate
+ Resources.
+
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoGetBarAttributes (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -1001,10 +1338,23 @@ PciIoGetBarAttributes (
*Resources = Descriptor;
}
return EFI_SUCCESS;
}
+/**
+ Sets the attributes for a range of a BAR on a PCI controller.
+
+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
+ @param Attributes The mask of attributes to set for the resource range specified by
+ BarIndex, Offset, and Length.
+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
+ base address for resource range. The legal range for this field is 0..5.
+ @param Offset A pointer to the BAR relative base address of the resource range to be
+ modified by the attributes specified by Attributes.
+ @param Length A pointer to the length of the resource range to be modified by the
+ attributes specified by Attributes.
+**/
STATIC
EFI_STATUS
EFIAPI
PciIoSetBarAttributes (
IN EFI_PCI_IO_PROTOCOL *This,
@@ -1037,10 +1387,16 @@ STATIC CONST EFI_PCI_IO_PROTOCOL PciIoTemplate =
PciIoSetBarAttributes,
0,
0
};
+/**
+ Initialize PciIo Protocol.
+
+ @param Dev Point to NON_DISCOVERABLE_PCI_DEVICE instance.
+
+**/
VOID
InitializePciIoProtocol (
NON_DISCOVERABLE_PCI_DEVICE *Dev
)
{
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
index 4496148..e641189 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
@@ -100,10 +100,16 @@ typedef struct {
// on behalf of this device
//
LIST_ENTRY UncachedAllocationList;
} NON_DISCOVERABLE_PCI_DEVICE;
+/**
+ Initialize PciIo Protocol.
+
+ @param Device Point to NON_DISCOVERABLE_PCI_DEVICE instance.
+
+**/
VOID
InitializePciIoProtocol (
NON_DISCOVERABLE_PCI_DEVICE *Device
);
--
1.9.5.msysgit.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule
2016-12-16 2:25 [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Dandan Bi
2016-12-16 2:25 ` [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Dandan Bi
@ 2016-12-16 2:25 ` Dandan Bi
2016-12-16 4:59 ` Ni, Ruiyu
2016-12-16 4:59 ` [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Ni, Ruiyu
2 siblings, 1 reply; 6+ messages in thread
From: Dandan Bi @ 2016-12-16 2:25 UTC (permalink / raw)
To: edk2-devel; +Cc: Ard Biesheuvel, Ruiyu Ni
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
.../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c | 2 +-
.../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
index 876e99f..3e9ff66 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
@@ -21,11 +21,11 @@ EFI_CPU_ARCH_PROTOCOL *mCpu;
//
// We only support the following device types
//
STATIC
CONST EFI_GUID * CONST
-SupportedNonDiscoverableDevices [] = {
+SupportedNonDiscoverableDevices[] = {
&gEdkiiNonDiscoverableAhciDeviceGuid,
&gEdkiiNonDiscoverableEhciDeviceGuid,
&gEdkiiNonDiscoverableNvmeDeviceGuid,
&gEdkiiNonDiscoverableOhciDeviceGuid,
&gEdkiiNonDiscoverableSdhciDeviceGuid,
diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
index 1ffbdfa..b07c129 100644
--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
@@ -1298,11 +1298,12 @@ PciIoGetBarAttributes (
OUT UINT64 *Supports OPTIONAL,
OUT VOID **Resources OPTIONAL
)
{
NON_DISCOVERABLE_PCI_DEVICE *Dev;
- EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor, *BarDesc;
+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor;
+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *BarDesc;
EFI_ACPI_END_TAG_DESCRIPTOR *End;
EFI_STATUS Status;
if (Supports == NULL && Resources == NULL) {
return EFI_INVALID_PARAMETER;
--
1.9.5.msysgit.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure
2016-12-16 2:25 [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Dandan Bi
2016-12-16 2:25 ` [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Dandan Bi
2016-12-16 2:25 ` [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule Dandan Bi
@ 2016-12-16 4:59 ` Ni, Ruiyu
2 siblings, 0 replies; 6+ messages in thread
From: Ni, Ruiyu @ 2016-12-16 4:59 UTC (permalink / raw)
To: Bi, Dandan, edk2-devel@lists.01.org; +Cc: Ard Biesheuvel
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Regards,
Ray
>-----Original Message-----
>From: Bi, Dandan
>Sent: Friday, December 16, 2016 10:26 AM
>To: edk2-devel@lists.01.org
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Ni, Ruiyu <ruiyu.ni@intel.com>
>Subject: [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure
>
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>Cc: Ruiyu Ni <ruiyu.ni@intel.com>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Dandan Bi <dandan.bi@intel.com>
>---
> .../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>index ce73a77..f9b13a5 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>@@ -555,10 +555,11 @@ NonCoherentPciIoFreeBuffer (
> BOOLEAN Found;
>
> Dev = NON_DISCOVERABLE_PCI_DEVICE_FROM_PCI_IO(This);
>
> Found = FALSE;
>+ Alloc = NULL;
>
> //
> // Find the uncached allocation list entry associated
> // with this allocation
> //
>--
>1.9.5.msysgit.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions
2016-12-16 2:25 ` [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Dandan Bi
@ 2016-12-16 4:59 ` Ni, Ruiyu
0 siblings, 0 replies; 6+ messages in thread
From: Ni, Ruiyu @ 2016-12-16 4:59 UTC (permalink / raw)
To: Bi, Dandan, edk2-devel@lists.01.org; +Cc: Ard Biesheuvel
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Regards,
Ray
>-----Original Message-----
>From: Bi, Dandan
>Sent: Friday, December 16, 2016 10:26 AM
>To: edk2-devel@lists.01.org
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Ni, Ruiyu <ruiyu.ni@intel.com>
>Subject: [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions
>
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>Cc: Ruiyu Ni <ruiyu.ni@intel.com>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Dandan Bi <dandan.bi@intel.com>
>---
> .../NonDiscoverablePciDeviceDxe/ComponentName.c | 47 +++
> .../NonDiscoverablePciDeviceDxe.c | 50 ++-
> .../NonDiscoverablePciDeviceDxe.inf | 18 +-
> .../NonDiscoverablePciDeviceIo.c | 362 ++++++++++++++++++++-
> .../NonDiscoverablePciDeviceIo.h | 6 +
> 5 files changed, 469 insertions(+), 14 deletions(-)
>
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
>index 6e51d00..0e6ebec 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c
>@@ -28,10 +28,31 @@ EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {
> { NULL, NULL }
> };
>
> EFI_COMPONENT_NAME_PROTOCOL gComponentName;
>
>+/**
>+ Retrieves a Unicode string that is the user readable name of the UEFI Driver.
>+
>+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
>+ @param Language A pointer to a three character ISO 639-2 language identifier.
>+ This is the language of the driver name that that the caller
>+ is requesting, and it must match one of the languages specified
>+ in SupportedLanguages. The number of languages supported by a
>+ driver is up to the driver writer.
>+ @param DriverName A pointer to the Unicode string to return. This Unicode string
>+ is the name of the driver specified by This in the language
>+ specified by Language.
>+
>+ @retval EFI_SUCCESS The Unicode string for the Driver specified by This
>+ and the language specified by Language was returned
>+ in DriverName.
>+ @retval EFI_INVALID_PARAMETER Language is NULL.
>+ @retval EFI_INVALID_PARAMETER DriverName is NULL.
>+ @retval EFI_UNSUPPORTED The driver specified by This does not support the
>+ language specified by Language.
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciGetDriverName (
> IN EFI_COMPONENT_NAME_PROTOCOL *This,
>@@ -46,10 +67,36 @@ NonDiscoverablePciGetDriverName (
> DriverName,
> (BOOLEAN)(This == &gComponentName) // Iso639Language
> );
> }
>
>+/**
>+ Retrieves a Unicode string that is the user readable name of the controller
>+ that is being managed by an UEFI Driver.
>+
>+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
>+ @param DeviceHandle The handle of a controller that the driver specified by
>+ This is managing. This handle specifies the controller
>+ whose name is to be returned.
>+ @param ChildHandle The handle of the child controller to retrieve the name
>+ of. This is an optional parameter that may be NULL. It
>+ will be NULL for device drivers. It will also be NULL
>+ for a bus drivers that wish to retrieve the name of the
>+ bus controller. It will not be NULL for a bus driver
>+ that wishes to retrieve the name of a child controller.
>+ @param Language A pointer to a three character ISO 639-2 language
>+ identifier. This is the language of the controller name
>+ that that the caller is requesting, and it must match one
>+ of the languages specified in SupportedLanguages. The
>+ number of languages supported by a driver is up to the
>+ driver writer.
>+ @param ControllerName A pointer to the Unicode string to return. This Unicode
>+ string is the name of the controller specified by
>+ ControllerHandle and ChildHandle in the language
>+ specified by Language from the point of view of the
>+ driver specified by This.
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciGetDeviceName (
> IN EFI_COMPONENT_NAME_PROTOCOL *This,
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>index 0fcf2b2..876e99f 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>@@ -47,10 +47,23 @@ SupportedNonDiscoverableDevices [] = {
> // - 5.1.3.4 OpenProtocol() and CloseProtocol()
> // - UEFI Spec 2.3.1 + Errata C
> // - 6.3 Protocol Handler Services
> //
>
>+/**
>+ Supported function of Driver Binding protocol for this driver.
>+ Test to see if this driver supports ControllerHandle.
>+
>+ @param This Protocol instance pointer.
>+ @param DeviceHandle Handle of device to test.
>+ @param RemainingDevicePath A pointer to the device path.
>+ it should be ignored by device driver.
>+
>+ @retval EFI_SUCCESS This driver supports this device.
>+ @retval other This driver does not support this device.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciDeviceSupported (
> IN EFI_DRIVER_BINDING_PROTOCOL *This,
>@@ -101,10 +114,23 @@ CloseProtocol:
> This->DriverBindingHandle, DeviceHandle);
>
> return Status;
> }
>
>+/**
>+ This routine is called right after the .Supported() called and
>+ Start this driver on ControllerHandle.
>+
>+ @param This Protocol instance pointer.
>+ @param DeviceHandle Handle of device to bind driver to.
>+ @param RemainingDevicePath A pointer to the device path.
>+ it should be ignored by device driver.
>+
>+ @retval EFI_SUCCESS This driver is added to this device.
>+ @retval other Some error occurs when binding this driver to this device.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciDeviceStart (
> IN EFI_DRIVER_BINDING_PROTOCOL *This,
>@@ -151,11 +177,22 @@ FreeDev:
> FreePool (Dev);
>
> return Status;
> }
>
>+/**
>+ Stop this driver on ControllerHandle.
>+
>+ @param This Protocol instance pointer.
>+ @param DeviceHandle Handle of device to stop driver on.
>+ @param NumberOfChildren Not used.
>+ @param ChildHandleBuffer Not used.
>
>+ @retval EFI_SUCCESS This driver is removed from this device.
>+ @retval other Some error occurs when removing this driver from this device.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciDeviceStop (
> IN EFI_DRIVER_BINDING_PROTOCOL *This,
>@@ -207,13 +244,20 @@ STATIC EFI_DRIVER_BINDING_PROTOCOL gDriverBinding = {
> 0x10, // Version, must be in [0x10 .. 0xFFFFFFEF] for IHV-developed drivers
> NULL,
> NULL
> };
>
>-//
>-// Entry point of this driver.
>-//
>+/**
>+ Entry point of this driver.
>+
>+ @param ImageHandle Image handle this driver.
>+ @param SystemTable Pointer to the System Table.
>+
>+ @retval EFI_SUCCESS The entry point is executed successfully.
>+ @retval other Some error occurred when executing this entry point.
>+
>+**/
> EFI_STATUS
> EFIAPI
> NonDiscoverablePciDeviceDxeEntryPoint (
> IN EFI_HANDLE ImageHandle,
> IN EFI_SYSTEM_TABLE *SystemTable
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
>index 5faa894..ac551a8 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
>@@ -1,6 +1,8 @@
> ## @file
>+# PCI I/O driver for non-discoverable devices.
>+#
> # Copyright (C) 2016, Linaro Ltd.
> #
> # 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
>@@ -42,13 +44,13 @@ [Protocols]
> gEfiPciIoProtocolGuid ## BY_START
> gEdkiiNonDiscoverableDeviceProtocolGuid ## TO_START
> gEfiCpuArchProtocolGuid ## CONSUMES
>
> [Guids]
>- gEdkiiNonDiscoverableAhciDeviceGuid
>- gEdkiiNonDiscoverableEhciDeviceGuid
>- gEdkiiNonDiscoverableNvmeDeviceGuid
>- gEdkiiNonDiscoverableOhciDeviceGuid
>- gEdkiiNonDiscoverableSdhciDeviceGuid
>- gEdkiiNonDiscoverableUfsDeviceGuid
>- gEdkiiNonDiscoverableUhciDeviceGuid
>- gEdkiiNonDiscoverableXhciDeviceGuid
>+ gEdkiiNonDiscoverableAhciDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableEhciDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableNvmeDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableOhciDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableSdhciDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableUfsDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableUhciDeviceGuid ## CONSUMES ## GUID
>+ gEdkiiNonDiscoverableXhciDeviceGuid ## CONSUMES ## GUID
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>index f9b13a5..1ffbdfa 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>@@ -26,13 +26,18 @@ typedef struct {
> VOID *HostAddress;
> EFI_PCI_IO_PROTOCOL_OPERATION Operation;
> UINTN NumberOfBytes;
> } NON_DISCOVERABLE_PCI_DEVICE_MAP_INFO;
>
>-//
>-// Get the resource associated with BAR number 'BarIndex'.
>-//
>+/**
>+ Get the resource associated with BAR number 'BarIndex'.
>+
>+ @param Dev Point to the NON_DISCOVERABLE_PCI_DEVICE instance.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory operation to perform.
>+ @param Descriptor Points to the address space descriptor
>+**/
> STATIC
> EFI_STATUS
> GetBarResource (
> IN NON_DISCOVERABLE_PCI_DEVICE *Dev,
> IN UINT8 BarIndex,
>@@ -59,10 +64,25 @@ GetBarResource (
> BarIndex -= 1;
> }
> return EFI_NOT_FOUND;
> }
>
>+/**
>+ Reads from the memory space of a PCI controller. Returns either when the polling exit criteria is
>+ satisfied or after a defined duration.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory operation.
>+ @param Mask Mask used for the polling criteria.
>+ @param Value The comparison value used for the polling exit criteria.
>+ @param Delay The number of 100 ns units to poll.
>+ @param Result Pointer to the last value read from the memory location.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoPollMem (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -77,10 +97,25 @@ PciIoPollMem (
> {
> ASSERT (FALSE);
> return EFI_UNSUPPORTED;
> }
>
>+/**
>+ Reads from the memory space of a PCI controller. Returns either when the polling exit criteria is
>+ satisfied or after a defined duration.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory operation.
>+ @param Mask Mask used for the polling criteria.
>+ @param Value The comparison value used for the polling exit criteria.
>+ @param Delay The number of 100 ns units to poll.
>+ @param Result Pointer to the last value read from the memory location.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoPollIo (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -95,10 +130,26 @@ PciIoPollIo (
> {
> ASSERT (FALSE);
> return EFI_UNSUPPORTED;
> }
>
>+/**
>+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
>+
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param DstStride The stride of the destination buffer.
>+ @param Dst For read operations, the destination buffer to store the results. For write
>+ operations, the destination buffer to write data to.
>+ @param SrcStride The stride of the source buffer.
>+ @param Src For read operations, the source buffer to read data from. For write
>+ operations, the source buffer to write data from.
>+
>+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoMemRW (
> IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
>@@ -146,10 +197,30 @@ PciIoMemRW (
> }
>
> return EFI_SUCCESS;
> }
>
>+/**
>+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory or I/O operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from.
>+
>+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
>+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
>+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
>+ valid for the PCI BAR specified by BarIndex.
>+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoMemRead (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -213,10 +284,30 @@ PciIoMemRead (
> break;
> }
> return EFI_INVALID_PARAMETER;
> }
>
>+/**
>+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory or I/O operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from.
>+
>+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
>+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
>+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
>+ valid for the PCI BAR specified by BarIndex.
>+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoMemWrite (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -280,10 +371,23 @@ PciIoMemWrite (
> break;
> }
> return EFI_INVALID_PARAMETER;
> }
>
>+/**
>+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory or I/O operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoIoRead (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -296,10 +400,23 @@ PciIoIoRead (
> {
> ASSERT (FALSE);
> return EFI_UNSUPPORTED;
> }
>
>+/**
>+ Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for the memory or I/O operation to perform.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoIoWrite (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -312,10 +429,21 @@ PciIoIoWrite (
> {
> ASSERT (FALSE);
> return EFI_UNSUPPORTED;
> }
>
>+/**
>+ Enable a PCI driver to access PCI config space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoPciRead (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -348,10 +476,26 @@ PciIoPciRead (
> Count -= Length >> ((UINTN)Width & 0x3);
> }
> return PciIoMemRW (Width, Count, 1, Buffer, 1, Address);
> }
>
>+/**
>+ Enable a PCI driver to access PCI config space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory or I/O operations.
>+ @param Offset The offset within the selected BAR to start the memory or I/O operation.
>+ @param Count The number of memory or I/O operations to perform.
>+ @param Buffer For read operations, the destination buffer to store the results. For write
>+ operations, the source buffer to write data from
>+
>+ @retval EFI_SUCCESS The data was read from or written to the PCI controller.
>+ @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
>+ valid for the PCI BAR specified by BarIndex.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoPciWrite (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -376,10 +520,28 @@ PciIoPciWrite (
> }
>
> return PciIoMemRW (Width, Count, 1, Address, 1, Buffer);
> }
>
>+/**
>+ Enables a PCI driver to copy one region of PCI memory space to another region of PCI
>+ memory space.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Width Signifies the width of the memory operations.
>+ @param DestBarIndex The BAR index in the standard PCI Configuration header to use as the
>+ base address for the memory operation to perform.
>+ @param DestOffset The destination offset within the BAR specified by DestBarIndex to
>+ start the memory writes for the copy operation.
>+ @param SrcBarIndex The BAR index in the standard PCI Configuration header to use as the
>+ base address for the memory operation to perform.
>+ @param SrcOffset The source offset within the BAR specified by SrcBarIndex to start
>+ the memory reads for the copy operation.
>+ @param Count The number of memory operations to perform. Bytes moved is Width
>+ size * Count, starting at DestOffset and SrcOffset.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoCopyMem (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -393,10 +555,29 @@ PciIoCopyMem (
> {
> ASSERT (FALSE);
> return EFI_UNSUPPORTED;
> }
>
>+/**
>+ Provides the PCI controller-specific addresses needed to access system memory.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Operation Indicates if the bus master is going to read or write to system memory.
>+ @param HostAddress The system memory address to map to the PCI controller.
>+ @param NumberOfBytes On input the number of bytes to map. On output the number of bytes
>+ that were mapped.
>+ @param DeviceAddress The resulting map address for the bus master PCI controller to use to
>+ access the hosts HostAddress.
>+ @param Mapping A resulting value to pass to Unmap().
>+
>+ @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
>+ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
>+ @retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> CoherentPciIoMap (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -459,10 +640,19 @@ CoherentPciIoMap (
> *Mapping = NULL;
> }
> return EFI_SUCCESS;
> }
>
>+/**
>+ Completes the Map() operation and releases any corresponding resources.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Mapping The mapping value returned from Map().
>+
>+ @retval EFI_SUCCESS The range was unmapped.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> CoherentPciIoUnmap (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -482,10 +672,29 @@ CoherentPciIoUnmap (
> FreePool (MapInfo);
> }
> return EFI_SUCCESS;
> }
>
>+/**
>+ Allocates pages.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Type This parameter is not used and must be ignored.
>+ @param MemoryType The type of memory to allocate, EfiBootServicesData or
>+ EfiRuntimeServicesData.
>+ @param Pages The number of pages to allocate.
>+ @param HostAddress A pointer to store the base system memory address of the
>+ allocated range.
>+ @param Attributes The requested bit mask of attributes for the allocated range.
>+
>+ @retval EFI_SUCCESS The requested memory pages were allocated.
>+ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are
>+ MEMORY_WRITE_COMBINE and MEMORY_CACHED.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> CoherentPciIoAllocateBuffer (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -524,10 +733,20 @@ CoherentPciIoAllocateBuffer (
> *HostAddress = (VOID *)(UINTN)AllocAddress;
> }
> return Status;
> }
>
>+/**
>+ Frees memory that was allocated in function CoherentPciIoAllocateBuffer ().
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Pages The number of pages to free.
>+ @param HostAddress The base system memory address of the allocated range.
>+
>+ @retval EFI_SUCCESS The requested memory pages were freed.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> CoherentPciIoFreeBuffer (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -537,10 +756,21 @@ CoherentPciIoFreeBuffer (
> {
> FreePages (HostAddress, Pages);
> return EFI_SUCCESS;
> }
>
>+/**
>+ Frees memory that was allocated in function NonCoherentPciIoAllocateBuffer ().
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Pages The number of pages to free.
>+ @param HostAddress The base system memory address of the allocated range.
>+
>+ @retval EFI_SUCCESS The requested memory pages were freed.
>+ @retval others The operation contain some errors.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonCoherentPciIoFreeBuffer (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -602,10 +832,29 @@ NonCoherentPciIoFreeBuffer (
> FreeAlloc:
> FreePool (Alloc);
> return Status;
> }
>
>+/**
>+ Allocates pages.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Type This parameter is not used and must be ignored.
>+ @param MemoryType The type of memory to allocate, EfiBootServicesData or
>+ EfiRuntimeServicesData.
>+ @param Pages The number of pages to allocate.
>+ @param HostAddress A pointer to store the base system memory address of the
>+ allocated range.
>+ @param Attributes The requested bit mask of attributes for the allocated range.
>+
>+ @retval EFI_SUCCESS The requested memory pages were allocated.
>+ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are
>+ MEMORY_WRITE_COMBINE and MEMORY_CACHED.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonCoherentPciIoAllocateBuffer (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -700,10 +949,29 @@ RemoveList:
> FreeBuffer:
> CoherentPciIoFreeBuffer (This, Pages, AllocAddress);
> return Status;
> }
>
>+/**
>+ Provides the PCI controller-specific addresses needed to access system memory.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Operation Indicates if the bus master is going to read or write to system memory.
>+ @param HostAddress The system memory address to map to the PCI controller.
>+ @param NumberOfBytes On input the number of bytes to map. On output the number of bytes
>+ that were mapped.
>+ @param DeviceAddress The resulting map address for the bus master PCI controller to use to
>+ access the hosts HostAddress.
>+ @param Mapping A resulting value to pass to Unmap().
>+
>+ @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
>+ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
>+ @retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonCoherentPciIoMap (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -814,10 +1082,19 @@ FreeMapInfo:
> FreePool (MapInfo);
>
> return Status;
> }
>
>+/**
>+ Completes the Map() operation and releases any corresponding resources.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Mapping The mapping value returned from Map().
>+
>+ @retval EFI_SUCCESS The range was unmapped.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> NonCoherentPciIoUnmap (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -857,20 +1134,39 @@ NonCoherentPciIoUnmap (
> }
> FreePool (MapInfo);
> return EFI_SUCCESS;
> }
>
>+/**
>+ Flushes all PCI posted write transactions from a PCI host bridge to system memory.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoFlush (
> IN EFI_PCI_IO_PROTOCOL *This
> )
> {
> return EFI_SUCCESS;
> }
>
>+/**
>+ Retrieves this PCI controller's current PCI bus number, device number, and function number.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param SegmentNumber The PCI controller's current PCI segment number.
>+ @param BusNumber The PCI controller's current PCI bus number.
>+ @param DeviceNumber The PCI controller's current PCI device number.
>+ @param FunctionNumber The PCI controller's current PCI function number.
>+
>+ @retval EFI_SUCCESS The PCI controller location was returned.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoGetLocation (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -893,10 +1189,29 @@ PciIoGetLocation (
> *FunctionNumber = 0;
>
> return EFI_SUCCESS;
> }
>
>+/**
>+ Performs an operation on the attributes that this PCI controller supports. The operations include
>+ getting the set of supported attributes, retrieving the current attributes, setting the current
>+ attributes, enabling attributes, and disabling attributes.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Operation The operation to perform on the attributes for this PCI controller.
>+ @param Attributes The mask of attributes that are used for Set, Enable, and Disable
>+ operations.
>+ @param Result A pointer to the result mask of attributes that are returned for the Get
>+ and Supported operations.
>+
>+ @retval EFI_SUCCESS The operation on the PCI controller's attributes was completed.
>+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
>+ @retval EFI_UNSUPPORTED one or more of the bits set in
>+ Attributes are not supported by this PCI controller or one of
>+ its parent bridges when Operation is Set, Enable or Disable.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoAttributes (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -950,10 +1265,32 @@ PciIoAttributes (
> Dev->Enabled = TRUE;
> }
> return EFI_SUCCESS;
> }
>
>+/**
>+ Gets the attributes that this PCI controller supports setting on a BAR using
>+ SetBarAttributes(), and retrieves the list of resource descriptors for a BAR.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for resource range. The legal range for this field is 0..5.
>+ @param Supports A pointer to the mask of attributes that this PCI controller supports
>+ setting for this BAR with SetBarAttributes().
>+ @param Resources A pointer to the ACPI 2.0 resource descriptors that describe the current
>+ configuration of this BAR of the PCI controller.
>+
>+ @retval EFI_SUCCESS If Supports is not NULL, then the attributes that the PCI
>+ controller supports are returned in Supports. If Resources
>+ is not NULL, then the ACPI 2.0 resource descriptors that the PCI
>+ controller is currently using are returned in Resources.
>+ @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL.
>+ @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
>+ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate
>+ Resources.
>+
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoGetBarAttributes (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -1001,10 +1338,23 @@ PciIoGetBarAttributes (
> *Resources = Descriptor;
> }
> return EFI_SUCCESS;
> }
>
>+/**
>+ Sets the attributes for a range of a BAR on a PCI controller.
>+
>+ @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
>+ @param Attributes The mask of attributes to set for the resource range specified by
>+ BarIndex, Offset, and Length.
>+ @param BarIndex The BAR index of the standard PCI Configuration header to use as the
>+ base address for resource range. The legal range for this field is 0..5.
>+ @param Offset A pointer to the BAR relative base address of the resource range to be
>+ modified by the attributes specified by Attributes.
>+ @param Length A pointer to the length of the resource range to be modified by the
>+ attributes specified by Attributes.
>+**/
> STATIC
> EFI_STATUS
> EFIAPI
> PciIoSetBarAttributes (
> IN EFI_PCI_IO_PROTOCOL *This,
>@@ -1037,10 +1387,16 @@ STATIC CONST EFI_PCI_IO_PROTOCOL PciIoTemplate =
> PciIoSetBarAttributes,
> 0,
> 0
> };
>
>+/**
>+ Initialize PciIo Protocol.
>+
>+ @param Dev Point to NON_DISCOVERABLE_PCI_DEVICE instance.
>+
>+**/
> VOID
> InitializePciIoProtocol (
> NON_DISCOVERABLE_PCI_DEVICE *Dev
> )
> {
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
>index 4496148..e641189 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h
>@@ -100,10 +100,16 @@ typedef struct {
> // on behalf of this device
> //
> LIST_ENTRY UncachedAllocationList;
> } NON_DISCOVERABLE_PCI_DEVICE;
>
>+/**
>+ Initialize PciIo Protocol.
>+
>+ @param Device Point to NON_DISCOVERABLE_PCI_DEVICE instance.
>+
>+**/
> VOID
> InitializePciIoProtocol (
> NON_DISCOVERABLE_PCI_DEVICE *Device
> );
>
>--
>1.9.5.msysgit.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule
2016-12-16 2:25 ` [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule Dandan Bi
@ 2016-12-16 4:59 ` Ni, Ruiyu
0 siblings, 0 replies; 6+ messages in thread
From: Ni, Ruiyu @ 2016-12-16 4:59 UTC (permalink / raw)
To: Bi, Dandan, edk2-devel@lists.01.org; +Cc: Ard Biesheuvel
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Regards,
Ray
>-----Original Message-----
>From: Bi, Dandan
>Sent: Friday, December 16, 2016 10:26 AM
>To: edk2-devel@lists.01.org
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Ni, Ruiyu <ruiyu.ni@intel.com>
>Subject: [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule
>
>Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>Cc: Ruiyu Ni <ruiyu.ni@intel.com>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Dandan Bi <dandan.bi@intel.com>
>---
> .../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c | 2 +-
> .../Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>index 876e99f..3e9ff66 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c
>@@ -21,11 +21,11 @@ EFI_CPU_ARCH_PROTOCOL *mCpu;
> //
> // We only support the following device types
> //
> STATIC
> CONST EFI_GUID * CONST
>-SupportedNonDiscoverableDevices [] = {
>+SupportedNonDiscoverableDevices[] = {
> &gEdkiiNonDiscoverableAhciDeviceGuid,
> &gEdkiiNonDiscoverableEhciDeviceGuid,
> &gEdkiiNonDiscoverableNvmeDeviceGuid,
> &gEdkiiNonDiscoverableOhciDeviceGuid,
> &gEdkiiNonDiscoverableSdhciDeviceGuid,
>diff --git a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>index 1ffbdfa..b07c129 100644
>--- a/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>+++ b/MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c
>@@ -1298,11 +1298,12 @@ PciIoGetBarAttributes (
> OUT UINT64 *Supports OPTIONAL,
> OUT VOID **Resources OPTIONAL
> )
> {
> NON_DISCOVERABLE_PCI_DEVICE *Dev;
>- EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor, *BarDesc;
>+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor;
>+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *BarDesc;
> EFI_ACPI_END_TAG_DESCRIPTOR *End;
> EFI_STATUS Status;
>
> if (Supports == NULL && Resources == NULL) {
> return EFI_INVALID_PARAMETER;
>--
>1.9.5.msysgit.1
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-12-16 4:59 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-16 2:25 [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Dandan Bi
2016-12-16 2:25 ` [patch 2/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Add comments for functions Dandan Bi
2016-12-16 4:59 ` Ni, Ruiyu
2016-12-16 2:25 ` [patch 3/3] MdeModulePkg/NonDiscoverablePciDevice: Make variable definition follow rule Dandan Bi
2016-12-16 4:59 ` Ni, Ruiyu
2016-12-16 4:59 ` [patch 1/3] MdeModulePkg/NonDiscoverablePciDeviceDxe: Fix VS2010/2012 build failure Ni, Ruiyu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox