diff --git a/PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c b/PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c index 798655016f..a38613059b 100644 --- a/PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c +++ b/PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c @@ -1,16 +1,16 @@ /** @file PCI Root Bridge Io Protocol implementation -Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials are -licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php + Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + This program and the accompanying materials are licensed and made available + under the terms and conditions of the BSD License which accompanies this + distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php -**/ + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ #include "PciHostBridge.h" #include "IoFifo.h" @@ -35,33 +35,48 @@ RESOURCE_CONFIGURATION Configuration = { // /** - Polls an address in memory mapped I/O space until an exit condition is met, or - a timeout occurs. + Polls an address in memory mapped I/O space until an exit condition is met, + or a timeout occurs. - This function provides a standard way to poll a PCI memory location. A PCI memory read - operation is performed at the PCI memory address specified by Address for the width specified - by Width. The result of this PCI memory read operation is stored in Result. This PCI memory - read operation is repeated until either a timeout of Delay 100 ns units has expired, or (Result & - Mask) is equal to Value. + This function provides a standard way to poll a PCI memory location. A PCI + memory read operation is performed at the PCI memory address specified by + Address for the width specified by Width. The result of this PCI memory read + operation is stored in Result. This PCI memory read operation is repeated + until either a timeout of Delay 100 ns units has expired, or (Result & Mask) + is equal to Value. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The base address of the memory operations. The caller is - responsible for aligning Address if required. - @param[in] Mask Mask used for the polling criteria. Bytes above Width in Mask - are ignored. The bits in the bytes below Width which are zero in - Mask are ignored when polling the memory address. - @param[in] Value The comparison value used for the polling exit criteria. - @param[in] Delay The number of 100 ns units to poll. Note that timer available may - be of poorer granularity. - @param[out] Result Pointer to the last value read from the memory location. - - @retval EFI_SUCCESS The last data returned from the access matched the poll exit criteria. - @retval EFI_INVALID_PARAMETER Width is invalid. - @retval EFI_INVALID_PARAMETER Result is NULL. - @retval EFI_TIMEOUT Delay expired before a match occurred. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The base address of the memory operations. The caller + is responsible for aligning Address if required. + + @param[in] Mask Mask used for the polling criteria. Bytes above Width + in Mask are ignored. The bits in the bytes below Width + which are zero in Mask are ignored when polling the + memory address. + + @param[in] Value The comparison value used for the polling exit + criteria. + + @param[in] Delay The number of 100 ns units to poll. Note that timer + available may be of poorer granularity. + + @param[out] Result Pointer to the last value read from the memory + location. + + @retval EFI_SUCCESS The last data returned from the access matched + the poll exit criteria. + + @retval EFI_INVALID_PARAMETER Width is invalid. + + @retval EFI_INVALID_PARAMETER Result is NULL. + + @retval EFI_TIMEOUT Delay expired before a match occurred. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -74,35 +89,49 @@ RootBridgeIoPollMem ( IN UINT64 Delay, OUT UINT64 *Result ); - + /** - Reads from the I/O space of a PCI Root Bridge. Returns when either the polling exit criteria is - satisfied or after a defined duration. + Reads from the I/O space of a PCI Root Bridge. Returns when either the + polling exit criteria is satisfied or after a defined duration. - This function provides a standard way to poll a PCI I/O location. A PCI I/O read operation is - performed at the PCI I/O address specified by Address for the width specified by Width. - The result of this PCI I/O read operation is stored in Result. This PCI I/O read operation is - repeated until either a timeout of Delay 100 ns units has expired, or (Result & Mask) is equal - to Value. + This function provides a standard way to poll a PCI I/O location. A PCI I/O + read operation is performed at the PCI I/O address specified by Address for + the width specified by Width. The result of this PCI I/O read operation is + stored in Result. This PCI I/O read operation is repeated until either a + timeout of Delay 100 ns units has expired, or (Result & Mask) is equal to + Value. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is responsible - for aligning Address if required. - @param[in] Mask Mask used for the polling criteria. Bytes above Width in Mask - are ignored. The bits in the bytes below Width which are zero in - Mask are ignored when polling the I/O address. - @param[in] Value The comparison value used for the polling exit criteria. - @param[in] Delay The number of 100 ns units to poll. Note that timer available may - be of poorer granularity. - @param[out] Result Pointer to the last value read from the memory location. - - @retval EFI_SUCCESS The last data returned from the access matched the poll exit criteria. - @retval EFI_INVALID_PARAMETER Width is invalid. - @retval EFI_INVALID_PARAMETER Result is NULL. - @retval EFI_TIMEOUT Delay expired before a match occurred. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the I/O operations. + + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning Address if required. + + @param[in] Mask Mask used for the polling criteria. Bytes above Width in + Mask are ignored. The bits in the bytes below Width + which are zero in Mask are ignored when polling the I/O + address. + + @param[in] Value The comparison value used for the polling exit criteria. + + + @param[in] Delay The number of 100 ns units to poll. Note that timer + available may be of poorer granularity. + + @param[out] Result Pointer to the last value read from the memory location. + + @retval EFI_SUCCESS The last data returned from the access matched + the poll exit criteria. + + @retval EFI_INVALID_PARAMETER Width is invalid. + + @retval EFI_INVALID_PARAMETER Result is NULL. + + @retval EFI_TIMEOUT Delay expired before a match occurred. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -115,29 +144,40 @@ RootBridgeIoPollIo ( IN UINT64 Delay, OUT UINT64 *Result ); - + /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge memory space. - The Mem.Read(), and Mem.Write() functions enable a driver to access PCI controller - registers in the PCI root bridge memory space. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI Root Bridge on a platform might require. + The Mem.Read(), and Mem.Write() functions enable a driver to access PCI + controller registers in the PCI root bridge memory space. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operation. - @param[in] Address The base address of the memory operation. The caller is - responsible for aligning the Address if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at Address. - @param[out] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operation. + + @param[in] Address The base address of the memory operation. The caller + is responsible for aligning the Address if required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at Address. + + @param[out] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -150,26 +190,38 @@ RootBridgeIoMemRead ( ); /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge memory space. - The Mem.Read(), and Mem.Write() functions enable a driver to access PCI controller - registers in the PCI root bridge memory space. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI Root Bridge on a platform might require. + The Mem.Read(), and Mem.Write() functions enable a driver to access PCI + controller registers in the PCI root bridge memory space. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operation. - @param[in] Address The base address of the memory operation. The caller is - responsible for aligning the Address if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at Address. - @param[in] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + + @param[in] Width Signifies the width of the memory operation. + + @param[in] Address The base address of the memory operation. The caller + is responsible for aligning the Address if required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at Address. + + @param[in] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -182,22 +234,33 @@ RootBridgeIoMemWrite ( ); /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge I/O space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge I/O space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] UserAddress The base address of the I/O operation. The caller is responsible for - aligning the Address if required. - @param[in] Count The number of I/O operations to perform. Bytes moved is Width - size * Count, starting at Address. - @param[out] UserBuffer 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] UserAddress The base address of the I/O operation. The caller is + responsible for aligning the Address if required. + + @param[in] Count The number of I/O operations to perform. Bytes moved + is Width size * Count, starting at Address. + + @param[out] UserBuffer 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -210,22 +273,33 @@ RootBridgeIoIoRead ( ); /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge I/O space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge I/O space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] UserAddress The base address of the I/O operation. The caller is responsible for - aligning the Address if required. - @param[in] Count The number of I/O operations to perform. Bytes moved is Width - size * Count, starting at Address. - @param[in] UserBuffer 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] UserAddress The base address of the I/O operation. The caller is + responsible for aligning the Address if required. + + @param[in] Count The number of I/O operations to perform. Bytes moved + is Width size * Count, starting at Address. + + @param[in] UserBuffer 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -238,28 +312,42 @@ RootBridgeIoIoWrite ( ); /** - Enables a PCI driver to copy one region of PCI root bridge memory space to another region of PCI - root bridge memory space. + Enables a PCI driver to copy one region of PCI root bridge memory space to + another region of PCI root bridge memory space. - The CopyMem() function enables a PCI driver to copy one region of PCI root bridge memory - space to another region of PCI root bridge memory space. This is especially useful for video scroll - operation on a memory mapped video buffer. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI root bridge on a platform might require. + The CopyMem() function enables a PCI driver to copy one region of PCI root + bridge memory space to another region of PCI root bridge memory space. This + is especially useful for video scroll operation on a memory mapped video + buffer. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI root bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL instance. - @param[in] Width Signifies the width of the memory operations. - @param[in] DestAddress The destination address of the memory operation. The caller is - responsible for aligning the DestAddress if required. - @param[in] SrcAddress The source address of the memory operation. The caller is - responsible for aligning the SrcAddress if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at DestAddress and SrcAddress. - - @retval EFI_SUCCESS The data was copied from one memory region to another memory region. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + instance. + @param[in] Width Signifies the width of the memory operations. + + @param[in] DestAddress The destination address of the memory operation. The + caller is responsible for aligning the DestAddress if + required. + + @param[in] SrcAddress The source address of the memory operation. The caller + is responsible for aligning the SrcAddress if + required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at DestAddress + and SrcAddress. + + + @retval EFI_SUCCESS The data was copied from one memory region + to another memory region. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -272,27 +360,40 @@ RootBridgeIoCopyMem ( ); /** - Enables a PCI driver to access PCI controller registers in a PCI root bridge's configuration space. + Enables a PCI driver to access PCI controller registers in a PCI root + bridge's configuration space. - The Pci.Read() and Pci.Write() functions enable a driver to access PCI configuration - registers for a PCI controller. - The PCI Configuration operations are carried out exactly as requested. The caller is responsible for - any alignment and PCI configuration width issues that a PCI Root Bridge on a platform might - require. + The Pci.Read() and Pci.Write() functions enable a driver to access PCI + configuration registers for a PCI controller. + The PCI Configuration operations are carried out exactly as requested. The + caller is responsible for any alignment and PCI configuration width issues + that a PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[out] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The address within the PCI configuration space for the + PCI controller. + + @param[in] Count The number of PCI configuration operations to perform. + Bytes moved is Width size * Count, starting at + Address. + + @param[out] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -305,27 +406,40 @@ RootBridgeIoPciRead ( ); /** - Enables a PCI driver to access PCI controller registers in a PCI root bridge's configuration space. + Enables a PCI driver to access PCI controller registers in a PCI root + bridge's configuration space. - The Pci.Read() and Pci.Write() functions enable a driver to access PCI configuration - registers for a PCI controller. - The PCI Configuration operations are carried out exactly as requested. The caller is responsible for - any alignment and PCI configuration width issues that a PCI Root Bridge on a platform might - require. + The Pci.Read() and Pci.Write() functions enable a driver to access PCI + configuration registers for a PCI controller. + The PCI Configuration operations are carried out exactly as requested. The + caller is responsible for any alignment and PCI configuration width issues + that a PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[in] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The address within the PCI configuration space for the + PCI controller. + + @param[in] Count The number of PCI configuration operations to perform. + Bytes moved is Width size * Count, starting at + Address. + + @param[in] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -338,30 +452,53 @@ RootBridgeIoPciWrite ( ); /** - Provides the PCI controller-specific addresses required to access system memory from a - DMA bus master. + Provides the PCI controller-specific addresses required to access system + memory from a DMA bus master. - The Map() function provides the PCI controller specific addresses needed to access system - memory. This function is used to map system memory for PCI bus master DMA accesses. + The Map() function provides the PCI controller specific addresses needed to + access system memory. This function is used to map system memory for PCI bus + master DMA accesses. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Operation Indicates if the bus master is going to read or write to system memory. - @param[in] HostAddress The system memory address to map to the PCI controller. - @param[in, out] NumberOfBytes On input the number of bytes to map. On output the number of bytes that were mapped. - @param[out] DeviceAddress The resulting map address for the bus master PCI controller to use - to access the system memory's HostAddress. - @param[out] Mapping The value to pass to Unmap() when the bus master DMA operation is complete. - - @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. - @retval EFI_INVALID_PARAMETER Operation is invalid. - @retval EFI_INVALID_PARAMETER HostAddress is NULL. - @retval EFI_INVALID_PARAMETER NumberOfBytes is NULL. - @retval EFI_INVALID_PARAMETER DeviceAddress is NULL. - @retval EFI_INVALID_PARAMETER Mapping is NULL. - @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer. - @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Operation Indicates if the bus master is going to read + or write to system memory. + + @param[in] HostAddress The system memory address to map to the PCI + controller. + + @param[in, out] NumberOfBytes On input the number of bytes to map. On + output the number of bytes that were mapped. + + @param[out] DeviceAddress The resulting map address for the bus master + PCI controller to use to access the system + memory's HostAddress. + + @param[out] Mapping The value to pass to Unmap() when the bus + master DMA operation is complete. + + @retval EFI_SUCCESS The range was mapped for the returned + NumberOfBytes. + + @retval EFI_INVALID_PARAMETER Operation is invalid. + + @retval EFI_INVALID_PARAMETER HostAddress is NULL. + + @retval EFI_INVALID_PARAMETER NumberOfBytes is NULL. + + @retval EFI_INVALID_PARAMETER DeviceAddress is NULL. + + @retval EFI_INVALID_PARAMETER Mapping is NULL. + + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common + buffer. + + @retval EFI_DEVICE_ERROR The system hardware could not map the + requested address. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -375,20 +512,26 @@ RootBridgeIoMap ( ); /** - Completes the Map() operation and releases any corresponding resources. + Completes the Map() operation and releases any corresponding resources. - The Unmap() function completes the Map() operation and releases any corresponding resources. - If the operation was an EfiPciOperationBusMasterWrite or - EfiPciOperationBusMasterWrite64, the data is committed to the target system memory. - Any resources used for the mapping are freed. + The Unmap() function completes the Map() operation and releases any + corresponding resources. + If the operation was an EfiPciOperationBusMasterWrite or + EfiPciOperationBusMasterWrite64, the data is committed to the target system + memory. + Any resources used for the mapping are freed. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Mapping The mapping value returned from Map(). - - @retval EFI_SUCCESS The range was unmapped. - @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). - @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The range was unmapped. + + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by + Map(). + + @retval EFI_DEVICE_ERROR The data was not committed to the target + system memory. **/ EFI_STATUS EFIAPI @@ -398,25 +541,39 @@ RootBridgeIoUnmap ( ); /** - Allocates pages that are suitable for an EfiPciOperationBusMasterCommonBuffer or - EfiPciOperationBusMasterCommonBuffer64 mapping. - - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @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. Only - the attributes EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE, EFI_PCI_ATTRIBUTE_MEMORY_CACHED, - and EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE may be used with this function. - - @retval EFI_SUCCESS The requested memory pages were allocated. - @retval EFI_INVALID_PARAMETER MemoryType is invalid. - @retval EFI_INVALID_PARAMETER HostAddress is NULL. - @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are - MEMORY_WRITE_COMBINE, MEMORY_CACHED, and DUAL_ADDRESS_CYCLE. - @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. + Allocates pages that are suitable for an EfiPciOperationBusMasterCommonBuffer + or EfiPciOperationBusMasterCommonBuffer64 mapping. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + + @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. Only the attributes + EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE, + EFI_PCI_ATTRIBUTE_MEMORY_CACHED, and + EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE may be used with this + function. + + @retval EFI_SUCCESS The requested memory pages were allocated. + + @retval EFI_INVALID_PARAMETER MemoryType is invalid. + + @retval EFI_INVALID_PARAMETER HostAddress is NULL. + + @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal + attribute bits are MEMORY_WRITE_COMBINE, + MEMORY_CACHED, and DUAL_ADDRESS_CYCLE. + + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. **/ EFI_STATUS EFIAPI @@ -430,18 +587,21 @@ RootBridgeIoAllocateBuffer ( ); /** - Frees memory that was allocated with AllocateBuffer(). + Frees memory that was allocated with AllocateBuffer(). - The FreeBuffer() function frees memory that was allocated with AllocateBuffer(). + The FreeBuffer() function frees memory that was allocated with + AllocateBuffer(). - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @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 EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages - was not allocated with AllocateBuffer(). + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @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 EFI_INVALID_PARAMETER The memory range specified by HostAddress and + Pages was not allocated with AllocateBuffer(). **/ EFI_STATUS EFIAPI @@ -452,23 +612,26 @@ RootBridgeIoFreeBuffer ( ); /** - Flushes all PCI posted write transactions from a PCI host bridge to system memory. + Flushes all PCI posted write transactions from a PCI host bridge to system + memory. - The Flush() function flushes any PCI posted write transactions from a PCI host bridge to system - memory. Posted write transactions are generated by PCI bus masters when they perform write - transactions to target addresses in system memory. - This function does not flush posted write transactions from any PCI bridges. A PCI controller - specific action must be taken to guarantee that the posted write transactions have been flushed from - the PCI controller and from all the PCI bridges into the PCI host bridge. This is typically done with - a PCI read transaction from the PCI controller prior to calling Flush(). + The Flush() function flushes any PCI posted write transactions from a PCI + host bridge to system memory. Posted write transactions are generated by PCI + bus masters when they perform write transactions to target addresses in + system memory. + This function does not flush posted write transactions from any PCI bridges. + A PCI controller specific action must be taken to guarantee that the posted + write transactions have been flushed from the PCI controller and from all the + PCI bridges into the PCI host bridge. This is typically done with a PCI read + transaction from the PCI controller prior to calling Flush(). - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - - @retval EFI_SUCCESS The PCI posted write transactions were flushed from the PCI host - bridge to system memory. - @retval EFI_DEVICE_ERROR The PCI posted write transactions were not flushed from the PCI - host bridge due to a hardware error. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @retval EFI_SUCCESS The PCI posted write transactions were flushed + from the PCI host bridge to system memory. + + @retval EFI_DEVICE_ERROR The PCI posted write transactions were not flushed + from the PCI host bridge due to a hardware error. **/ EFI_STATUS EFIAPI @@ -477,24 +640,30 @@ RootBridgeIoFlush ( ); /** - Gets the attributes that a PCI root bridge supports setting with SetAttributes(), and the - attributes that a PCI root bridge is currently using. + Gets the attributes that a PCI root bridge supports setting with + SetAttributes(), and the attributes that a PCI root bridge is currently + using. - The GetAttributes() function returns the mask of attributes that this PCI root bridge supports - and the mask of attributes that the PCI root bridge is currently using. + The GetAttributes() function returns the mask of attributes that this PCI + root bridge supports and the mask of attributes that the PCI root bridge is + currently using. - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param Supported A pointer to the mask of attributes that this PCI root bridge - supports setting with SetAttributes(). - @param Attributes A pointer to the mask of attributes that this PCI root bridge is - currently using. - - @retval EFI_SUCCESS If Supports is not NULL, then the attributes that the PCI root - bridge supports is returned in Supports. If Attributes is - not NULL, then the attributes that the PCI root bridge is currently - using is returned in Attributes. - @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param Supported A pointer to the mask of attributes that this PCI root + bridge supports setting with SetAttributes(). + + @param Attributes A pointer to the mask of attributes that this PCI root + bridge is currently using. + + + @retval EFI_SUCCESS If Supports is not NULL, then the attributes + that the PCI root bridge supports is returned + in Supports. If Attributes is not NULL, then + the attributes that the PCI root bridge is + currently using is returned in Attributes. + + @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL. **/ EFI_STATUS EFIAPI @@ -505,33 +674,47 @@ RootBridgeIoGetAttributes ( ); /** - Sets attributes for a resource range on a PCI root bridge. + Sets attributes for a resource range on a PCI root bridge. - The SetAttributes() function sets the attributes specified in Attributes for the PCI root - bridge on the resource range specified by ResourceBase and ResourceLength. Since the - granularity of setting these attributes may vary from resource type to resource type, and from - platform to platform, the actual resource range and the one passed in by the caller may differ. As a - result, this function may set the attributes specified by Attributes on a larger resource range - than the caller requested. The actual range is returned in ResourceBase and - ResourceLength. The caller is responsible for verifying that the actual range for which the - attributes were set is acceptable. + The SetAttributes() function sets the attributes specified in Attributes for + the PCI root bridge on the resource range specified by ResourceBase and + ResourceLength. Since the granularity of setting these attributes may vary + from resource type to resource type, and from platform to platform, the + actual resource range and the one passed in by the caller may differ. As a + result, this function may set the attributes specified by Attributes on a + larger resource range than the caller requested. The actual range is returned + in ResourceBase and ResourceLength. The caller is responsible for verifying + that the actual range for which the attributes were set is acceptable. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Attributes The mask of attributes to set. If the attribute bit - MEMORY_WRITE_COMBINE, MEMORY_CACHED, or - MEMORY_DISABLE is set, then the resource range is specified by - ResourceBase and ResourceLength. If - MEMORY_WRITE_COMBINE, MEMORY_CACHED, and - MEMORY_DISABLE are not set, then ResourceBase and - ResourceLength are ignored, and may be NULL. - @param[in, out] ResourceBase A pointer to the base address of the resource range to be modified - by the attributes specified by Attributes. - @param[in, out] ResourceLength A pointer to the length of the resource range to be modified by the - attributes specified by Attributes. - - @retval EFI_SUCCESS The current configuration of this PCI root bridge was returned in Resources. - @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge could not be retrieved. - @retval EFI_INVALID_PARAMETER Invalid pointer of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + @param[in] This A pointer to the + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + + @param[in] Attributes The mask of attributes to set. If the + attribute bit MEMORY_WRITE_COMBINE, + MEMORY_CACHED, or MEMORY_DISABLE is set, + then the resource range is specified by + ResourceBase and ResourceLength. If + MEMORY_WRITE_COMBINE, MEMORY_CACHED, and + MEMORY_DISABLE are not set, then + ResourceBase and ResourceLength are ignored, + and may be NULL. + + @param[in, out] ResourceBase A pointer to the base address of the + resource range to be modified by the + attributes specified by Attributes. + + @param[in, out] ResourceLength A pointer to the length of the resource + range to be modified by the attributes + specified by Attributes. + + @retval EFI_SUCCESS The current configuration of this PCI root bridge + was returned in Resources. + + @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge + could not be retrieved. + + @retval EFI_INVALID_PARAMETER Invalid pointer of + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL **/ EFI_STATUS @@ -544,27 +727,35 @@ RootBridgeIoSetAttributes ( ); /** - Retrieves the current resource settings of this PCI root bridge in the form of a set of ACPI 2.0 - resource descriptors. + Retrieves the current resource settings of this PCI root bridge in the form + of a set of ACPI 2.0 resource descriptors. - There are only two resource descriptor types from the ACPI Specification that may be used to - describe the current resources allocated to a PCI root bridge. These are the QWORD Address - Space Descriptor (ACPI 2.0 Section 6.4.3.5.1), and the End Tag (ACPI 2.0 Section 6.4.2.8). The - QWORD Address Space Descriptor can describe memory, I/O, and bus number ranges for dynamic - or fixed resources. The configuration of a PCI root bridge is described with one or more QWORD - Address Space Descriptors followed by an End Tag. + There are only two resource descriptor types from the ACPI Specification that + may be used to describe the current resources allocated to a PCI root bridge. + These are the QWORD Address Space Descriptor (ACPI 2.0 Section 6.4.3.5.1), + and the End Tag (ACPI 2.0 Section 6.4.2.8). The QWORD Address Space + Descriptor can describe memory, I/O, and bus number ranges for dynamic or + fixed resources. The configuration of a PCI root bridge is described with one + or more QWORD Address Space Descriptors followed by an End Tag. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[out] Resources A pointer to the ACPI 2.0 resource descriptors that describe the - current configuration of this PCI root bridge. The storage for the - ACPI 2.0 resource descriptors is allocated by this function. The - caller must treat the return buffer as read-only data, and the buffer - must not be freed by the caller. - - @retval EFI_SUCCESS The current configuration of this PCI root bridge was returned in Resources. - @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge could not be retrieved. - @retval EFI_INVALID_PARAMETER Invalid pointer of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[out] Resources A pointer to the ACPI 2.0 resource descriptors that + describe the current configuration of this PCI root + bridge. The storage for the ACPI 2.0 resource + descriptors is allocated by this function. The + caller must treat the return buffer as read-only + data, and the buffer must not be freed by the + caller. + + @retval EFI_SUCCESS The current configuration of this PCI root bridge + was returned in Resources. + + @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge + could not be retrieved. + + @retval EFI_INVALID_PARAMETER Invalid pointer of + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL **/ EFI_STATUS EFIAPI @@ -615,16 +806,17 @@ UINT8 mOutStride[] = { }; /** - Construct the Pci Root Bridge Io protocol @param Protocol Point to protocol instance + @param HostBridgeHandle Handle of host bridge + @param Attri Attribute of host bridge + @param ResAperture ResourceAperture for host bridge @retval EFI_SUCCESS Success to initialize the Pci Root Bridge. - **/ EFI_STATUS RootBridgeConstructor ( @@ -718,28 +910,39 @@ RootBridgeConstructor ( /** Check parameters for IO,MMIO,PCI read/write services of PCI Root Bridge IO. - The I/O operations are carried out exactly as requested. The caller is responsible - for satisfying any alignment and I/O width restrictions that a PI System on a - platform might require. For example on some platforms, width requests of - EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other hand, will - be handled by the driver. - + The I/O operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and I/O width restrictions that a PI + System on a platform might require. For example on some platforms, width + requests of EfiCpuIoWidthUint64 do not work. Misaligned buffers, on the other + hand, will be handled by the driver. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] OperationType I/O operation type: IO/MMIO/PCI. + @param[in] Width Signifies the width of the I/O or Memory operation. - @param[in] Address The base address of the I/O operation. - @param[in] Count The number of I/O operations to perform. The number of - bytes moved is Width size * Count, starting at Address. - @param[in] Buffer For read operations, the destination buffer to store the results. - For write operations, the source buffer from which to write data. - @retval EFI_SUCCESS The parameters for this request pass the checks. + @param[in] Address The base address of the I/O operation. + + @param[in] Count The number of I/O operations to perform. The number + of bytes moved is Width size * Count, starting at + Address. + + @param[in] Buffer For read operations, the destination buffer to + store the results. For write operations, the source + buffer from which to write data. + + @retval EFI_SUCCESS The parameters for this request pass the + checks. + @retval EFI_INVALID_PARAMETER Width is invalid for this PI system. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. - @retval EFI_UNSUPPORTED The address range specified by Address, Width, - and Count is not valid for this PI system. + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_UNSUPPORTED The Buffer is not aligned for the given Width. + + @retval EFI_UNSUPPORTED The address range specified by Address, Width, + and Count is not valid for this PI system. **/ EFI_STATUS RootBridgeIoCheckParameter ( @@ -859,22 +1062,34 @@ RootBridgeIoCheckParameter ( } /** - Internal help function for read and write memory space. + Internal help function for read and write memory space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Write Switch value for Read or Write. - @param[in] Width Signifies the width of the memory operations. - @param[in] UserAddress The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[in, out] UserBuffer 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Write Switch value for Read or Write. + + @param[in] Width Signifies the width of the memory operations. + + @param[in] UserAddress The address within the PCI configuration space for + the PCI controller. + + @param[in] Count The number of PCI configuration operations to + perform. Bytes moved is Width size * Count, + starting at Address. + + @param[in, out] UserBuffer 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS RootBridgeIoMemRW ( @@ -951,22 +1166,35 @@ RootBridgeIoMemRW ( } /** - Internal help function for read and write IO space. + Internal help function for read and write IO space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Write Switch value for Read or Write. - @param[in] Width Signifies the width of the memory operations. - @param[in] UserAddress The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[in, out] UserBuffer 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Write Switch value for Read or Write. + + @param[in] Width Signifies the width of the memory operations. + + @param[in] UserAddress The address within the PCI configuration space for + the PCI controller. + + @param[in] Count The number of PCI configuration operations to + perform. Bytes moved is Width size * Count, + starting at Address. + + @param[in, out] UserBuffer 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS RootBridgeIoIoRW ( @@ -1082,22 +1310,35 @@ RootBridgeIoIoRW ( } /** - Internal help function for read and write PCI configuration space. + Internal help function for read and write PCI configuration space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Write Switch value for Read or Write. - @param[in] Width Signifies the width of the memory operations. - @param[in] UserAddress The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[in, out] UserBuffer 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Write Switch value for Read or Write. + + @param[in] Width Signifies the width of the memory operations. + + @param[in] UserAddress The address within the PCI configuration space for + the PCI controller. + + @param[in] Count The number of PCI configuration operations to + perform. Bytes moved is Width size * Count, + starting at Address. + + @param[in, out] UserBuffer 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS RootBridgeIoPciRW ( @@ -1182,33 +1423,48 @@ RootBridgeIoPciRW ( } /** - Polls an address in memory mapped I/O space until an exit condition is met, or - a timeout occurs. + Polls an address in memory mapped I/O space until an exit condition is met, + or a timeout occurs. - This function provides a standard way to poll a PCI memory location. A PCI memory read - operation is performed at the PCI memory address specified by Address for the width specified - by Width. The result of this PCI memory read operation is stored in Result. This PCI memory - read operation is repeated until either a timeout of Delay 100 ns units has expired, or (Result & - Mask) is equal to Value. + This function provides a standard way to poll a PCI memory location. A PCI + memory read operation is performed at the PCI memory address specified by + Address for the width specified by Width. The result of this PCI memory read + operation is stored in Result. This PCI memory read operation is repeated + until either a timeout of Delay 100 ns units has expired, or (Result & Mask) + is equal to Value. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The base address of the memory operations. The caller is - responsible for aligning Address if required. - @param[in] Mask Mask used for the polling criteria. Bytes above Width in Mask - are ignored. The bits in the bytes below Width which are zero in - Mask are ignored when polling the memory address. - @param[in] Value The comparison value used for the polling exit criteria. - @param[in] Delay The number of 100 ns units to poll. Note that timer available may - be of poorer granularity. - @param[out] Result Pointer to the last value read from the memory location. - - @retval EFI_SUCCESS The last data returned from the access matched the poll exit criteria. - @retval EFI_INVALID_PARAMETER Width is invalid. - @retval EFI_INVALID_PARAMETER Result is NULL. - @retval EFI_TIMEOUT Delay expired before a match occurred. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The base address of the memory operations. The caller + is responsible for aligning Address if required. + + @param[in] Mask Mask used for the polling criteria. Bytes above Width + in Mask are ignored. The bits in the bytes below Width + which are zero in Mask are ignored when polling the + memory address. + + @param[in] Value The comparison value used for the polling exit + criteria. + + @param[in] Delay The number of 100 ns units to poll. Note that timer + available may be of poorer granularity. + + @param[out] Result Pointer to the last value read from the memory + location. + + @retval EFI_SUCCESS The last data returned from the access matched + the poll exit criteria. + + @retval EFI_INVALID_PARAMETER Width is invalid. + + @retval EFI_INVALID_PARAMETER Result is NULL. + + @retval EFI_TIMEOUT Delay expired before a match occurred. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1283,35 +1539,48 @@ RootBridgeIoPollMem ( } return EFI_TIMEOUT; } - + /** - Reads from the I/O space of a PCI Root Bridge. Returns when either the polling exit criteria is - satisfied or after a defined duration. + Reads from the I/O space of a PCI Root Bridge. Returns when either the + polling exit criteria is satisfied or after a defined duration. - This function provides a standard way to poll a PCI I/O location. A PCI I/O read operation is - performed at the PCI I/O address specified by Address for the width specified by Width. - The result of this PCI I/O read operation is stored in Result. This PCI I/O read operation is - repeated until either a timeout of Delay 100 ns units has expired, or (Result & Mask) is equal - to Value. + This function provides a standard way to poll a PCI I/O location. A PCI I/O + read operation is performed at the PCI I/O address specified by Address for + the width specified by Width. + The result of this PCI I/O read operation is stored in Result. This PCI I/O + read operation is repeated until either a timeout of Delay 100 ns units has + expired, or (Result & Mask) is equal to Value. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is responsible - for aligning Address if required. - @param[in] Mask Mask used for the polling criteria. Bytes above Width in Mask - are ignored. The bits in the bytes below Width which are zero in - Mask are ignored when polling the I/O address. - @param[in] Value The comparison value used for the polling exit criteria. - @param[in] Delay The number of 100 ns units to poll. Note that timer available may - be of poorer granularity. - @param[out] Result Pointer to the last value read from the memory location. - - @retval EFI_SUCCESS The last data returned from the access matched the poll exit criteria. - @retval EFI_INVALID_PARAMETER Width is invalid. - @retval EFI_INVALID_PARAMETER Result is NULL. - @retval EFI_TIMEOUT Delay expired before a match occurred. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the I/O operations. + + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning Address if required. + + @param[in] Mask Mask used for the polling criteria. Bytes above Width in + Mask are ignored. The bits in the bytes below Width + which are zero in Mask are ignored when polling the I/O + address. + + @param[in] Value The comparison value used for the polling exit criteria. + + @param[in] Delay The number of 100 ns units to poll. Note that timer + available may be of poorer granularity. + + @param[out] Result Pointer to the last value read from the memory location. + + @retval EFI_SUCCESS The last data returned from the access matched + the poll exit criteria. + + @retval EFI_INVALID_PARAMETER Width is invalid. + + @retval EFI_INVALID_PARAMETER Result is NULL. + + @retval EFI_TIMEOUT Delay expired before a match occurred. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1386,27 +1655,38 @@ RootBridgeIoPollIo ( } /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge memory space. - The Mem.Read(), and Mem.Write() functions enable a driver to access PCI controller - registers in the PCI root bridge memory space. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI Root Bridge on a platform might require. + The Mem.Read(), and Mem.Write() functions enable a driver to access PCI + controller registers in the PCI root bridge memory space. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operation. - @param[in] Address The base address of the memory operation. The caller is - responsible for aligning the Address if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at Address. - @param[out] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operation. + + @param[in] Address The base address of the memory operation. The caller + is responsible for aligning the Address if required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at Address. + + @param[out] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1422,26 +1702,38 @@ RootBridgeIoMemRead ( } /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge memory space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge memory space. - The Mem.Read(), and Mem.Write() functions enable a driver to access PCI controller - registers in the PCI root bridge memory space. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI Root Bridge on a platform might require. + The Mem.Read(), and Mem.Write() functions enable a driver to access PCI + controller registers in the PCI root bridge memory space. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operation. - @param[in] Address The base address of the memory operation. The caller is - responsible for aligning the Address if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at Address. - @param[in] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + + @param[in] Width Signifies the width of the memory operation. + + @param[in] Address The base address of the memory operation. The caller + is responsible for aligning the Address if required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at Address. + + @param[in] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1457,22 +1749,33 @@ RootBridgeIoMemWrite ( } /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge I/O space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge I/O space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The base address of the I/O operation. The caller is responsible for - aligning the Address if required. - @param[in] Count The number of I/O operations to perform. Bytes moved is Width - size * Count, starting at Address. - @param[out] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The base address of the I/O operation. The caller is + responsible for aligning the Address if required. + + @param[in] Count The number of I/O operations to perform. Bytes moved + is Width size * Count, starting at Address. + + @param[out] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1488,22 +1791,32 @@ RootBridgeIoIoRead ( } /** - Enables a PCI driver to access PCI controller registers in the PCI root bridge I/O space. + Enables a PCI driver to access PCI controller registers in the PCI root + bridge I/O space. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The base address of the I/O operation. The caller is responsible for - aligning the Address if required. - @param[in] Count The number of I/O operations to perform. Bytes moved is Width - size * Count, starting at Address. - @param[in] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The base address of the I/O operation. The caller is + responsible for aligning the Address if required. + + @param[in] Count The number of I/O operations to perform. Bytes moved + is Width size * Count, starting at Address. + + @param[in] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1519,28 +1832,41 @@ RootBridgeIoIoWrite ( } /** - Enables a PCI driver to copy one region of PCI root bridge memory space to another region of PCI - root bridge memory space. + Enables a PCI driver to copy one region of PCI root bridge memory space to + another region of PCI root bridge memory space. - The CopyMem() function enables a PCI driver to copy one region of PCI root bridge memory - space to another region of PCI root bridge memory space. This is especially useful for video scroll - operation on a memory mapped video buffer. - The memory operations are carried out exactly as requested. The caller is responsible for satisfying - any alignment and memory width restrictions that a PCI root bridge on a platform might require. + The CopyMem() function enables a PCI driver to copy one region of PCI root + bridge memory space to another region of PCI root bridge memory space. This + is especially useful for video scroll operation on a memory mapped video + buffer. + The memory operations are carried out exactly as requested. The caller is + responsible for satisfying any alignment and memory width restrictions that a + PCI root bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL instance. - @param[in] Width Signifies the width of the memory operations. - @param[in] DestAddress The destination address of the memory operation. The caller is - responsible for aligning the DestAddress if required. - @param[in] SrcAddress The source address of the memory operation. The caller is - responsible for aligning the SrcAddress if required. - @param[in] Count The number of memory operations to perform. Bytes moved is - Width size * Count, starting at DestAddress and SrcAddress. - - @retval EFI_SUCCESS The data was copied from one memory region to another memory region. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + instance. + @param[in] Width Signifies the width of the memory operations. + + @param[in] DestAddress The destination address of the memory operation. The + caller is responsible for aligning the DestAddress if + required. + + @param[in] SrcAddress The source address of the memory operation. The caller + is responsible for aligning the SrcAddress if + required. + + @param[in] Count The number of memory operations to perform. Bytes + moved is Width size * Count, starting at DestAddress + and SrcAddress. + + @retval EFI_SUCCESS The data was copied from one memory region + to another memory region. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1608,27 +1934,39 @@ RootBridgeIoCopyMem ( } /** - Enables a PCI driver to access PCI controller registers in a PCI root bridge's configuration space. + Enables a PCI driver to access PCI controller registers in a PCI root + bridge's configuration space. - The Pci.Read() and Pci.Write() functions enable a driver to access PCI configuration - registers for a PCI controller. - The PCI Configuration operations are carried out exactly as requested. The caller is responsible for - any alignment and PCI configuration width issues that a PCI Root Bridge on a platform might - require. + The Pci.Read() and Pci.Write() functions enable a driver to access PCI + configuration registers for a PCI controller. + The PCI Configuration operations are carried out exactly as requested. The + caller is responsible for any alignment and PCI configuration width issues + that a PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[out] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The address within the PCI configuration space for the + PCI controller. + + @param[in] Count The number of PCI configuration operations to perform. + Bytes moved is Width size * Count, starting at + Address. + + @param[out] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1644,27 +1982,39 @@ RootBridgeIoPciRead ( } /** - Enables a PCI driver to access PCI controller registers in a PCI root bridge's configuration space. + Enables a PCI driver to access PCI controller registers in a PCI root + bridge's configuration space. - The Pci.Read() and Pci.Write() functions enable a driver to access PCI configuration - registers for a PCI controller. - The PCI Configuration operations are carried out exactly as requested. The caller is responsible for - any alignment and PCI configuration width issues that a PCI Root Bridge on a platform might - require. + The Pci.Read() and Pci.Write() functions enable a driver to access PCI + configuration registers for a PCI controller. + The PCI Configuration operations are carried out exactly as requested. The + caller is responsible for any alignment and PCI configuration width issues + that a PCI Root Bridge on a platform might require. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Width Signifies the width of the memory operations. - @param[in] Address The address within the PCI configuration space for the PCI controller. - @param[in] Count The number of PCI configuration operations to perform. Bytes - moved is Width size * Count, starting at Address. - @param[in] 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 root bridge. - @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Width Signifies the width of the memory operations. + + @param[in] Address The address within the PCI configuration space for the + PCI controller. + + @param[in] Count The number of PCI configuration operations to perform. + Bytes moved is Width size * Count, starting at + Address. + + @param[in] 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 + root bridge. + + @retval EFI_INVALID_PARAMETER Width is invalid for this PCI root bridge. + + @retval EFI_INVALID_PARAMETER Buffer is NULL. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1680,30 +2030,53 @@ RootBridgeIoPciWrite ( } /** - Provides the PCI controller-specific addresses required to access system memory from a - DMA bus master. + Provides the PCI controller-specific addresses required to access system + memory from a DMA bus master. - The Map() function provides the PCI controller specific addresses needed to access system - memory. This function is used to map system memory for PCI bus master DMA accesses. + The Map() function provides the PCI controller specific addresses needed to + access system memory. This function is used to map system memory for PCI bus + master DMA accesses. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Operation Indicates if the bus master is going to read or write to system memory. - @param[in] HostAddress The system memory address to map to the PCI controller. - @param[in, out] NumberOfBytes On input the number of bytes to map. On output the number of bytes that were mapped. - @param[out] DeviceAddress The resulting map address for the bus master PCI controller to use - to access the system memory's HostAddress. - @param[out] Mapping The value to pass to Unmap() when the bus master DMA operation is complete. - - @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes. - @retval EFI_INVALID_PARAMETER Operation is invalid. - @retval EFI_INVALID_PARAMETER HostAddress is NULL. - @retval EFI_INVALID_PARAMETER NumberOfBytes is NULL. - @retval EFI_INVALID_PARAMETER DeviceAddress is NULL. - @retval EFI_INVALID_PARAMETER Mapping is NULL. - @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer. - @retval EFI_DEVICE_ERROR The system hardware could not map the requested address. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. + @param[in] This A pointer to the + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Operation Indicates if the bus master is going to read + or write to system memory. + + @param[in] HostAddress The system memory address to map to the PCI + controller. + + @param[in, out] NumberOfBytes On input the number of bytes to map. On + output the number of bytes that were mapped. + + @param[out] DeviceAddress The resulting map address for the bus master + PCI controller to use to access the system + memory's HostAddress. + + @param[out] Mapping The value to pass to Unmap() when the bus + master DMA operation is complete. + + @retval EFI_SUCCESS The range was mapped for the returned + NumberOfBytes. + + @retval EFI_INVALID_PARAMETER Operation is invalid. + + @retval EFI_INVALID_PARAMETER HostAddress is NULL. + + @retval EFI_INVALID_PARAMETER NumberOfBytes is NULL. + + @retval EFI_INVALID_PARAMETER DeviceAddress is NULL. + + @retval EFI_INVALID_PARAMETER Mapping is NULL. + + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common + buffer. + + @retval EFI_DEVICE_ERROR The system hardware could not map the + requested address. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + lack of resources. **/ EFI_STATUS EFIAPI @@ -1824,20 +2197,26 @@ RootBridgeIoMap ( } /** - Completes the Map() operation and releases any corresponding resources. + Completes the Map() operation and releases any corresponding resources. - The Unmap() function completes the Map() operation and releases any corresponding resources. - If the operation was an EfiPciOperationBusMasterWrite or - EfiPciOperationBusMasterWrite64, the data is committed to the target system memory. - Any resources used for the mapping are freed. + The Unmap() function completes the Map() operation and releases any + corresponding resources. + If the operation was an EfiPciOperationBusMasterWrite or + EfiPciOperationBusMasterWrite64, the data is committed to the target system + memory. + Any resources used for the mapping are freed. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Mapping The mapping value returned from Map(). - - @retval EFI_SUCCESS The range was unmapped. - @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by Map(). - @retval EFI_DEVICE_ERROR The data was not committed to the target system memory. + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Mapping The mapping value returned from Map(). + + @retval EFI_SUCCESS The range was unmapped. + + @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by + Map(). + + @retval EFI_DEVICE_ERROR The data was not committed to the target + system memory. **/ EFI_STATUS EFIAPI @@ -1881,25 +2260,39 @@ RootBridgeIoUnmap ( } /** - Allocates pages that are suitable for an EfiPciOperationBusMasterCommonBuffer or - EfiPciOperationBusMasterCommonBuffer64 mapping. - - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @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. Only - the attributes EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE, EFI_PCI_ATTRIBUTE_MEMORY_CACHED, - and EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE may be used with this function. - - @retval EFI_SUCCESS The requested memory pages were allocated. - @retval EFI_INVALID_PARAMETER MemoryType is invalid. - @retval EFI_INVALID_PARAMETER HostAddress is NULL. - @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are - MEMORY_WRITE_COMBINE, MEMORY_CACHED, and DUAL_ADDRESS_CYCLE. - @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. + Allocates pages that are suitable for an EfiPciOperationBusMasterCommonBuffer + or EfiPciOperationBusMasterCommonBuffer64 mapping. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + + @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. Only the attributes + EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE, + EFI_PCI_ATTRIBUTE_MEMORY_CACHED, and + EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE may be used with this + function. + + @retval EFI_SUCCESS The requested memory pages were allocated. + + @retval EFI_INVALID_PARAMETER MemoryType is invalid. + + @retval EFI_INVALID_PARAMETER HostAddress is NULL. + + @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal + attribute bits are MEMORY_WRITE_COMBINE, + MEMORY_CACHED, and DUAL_ADDRESS_CYCLE. + + @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. **/ EFI_STATUS EFIAPI @@ -1952,18 +2345,21 @@ RootBridgeIoAllocateBuffer ( } /** - Frees memory that was allocated with AllocateBuffer(). + Frees memory that was allocated with AllocateBuffer(). - The FreeBuffer() function frees memory that was allocated with AllocateBuffer(). + The FreeBuffer() function frees memory that was allocated with + AllocateBuffer(). - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @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 EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages - was not allocated with AllocateBuffer(). + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @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 EFI_INVALID_PARAMETER The memory range specified by HostAddress and + Pages was not allocated with AllocateBuffer(). **/ EFI_STATUS EFIAPI @@ -1977,23 +2373,26 @@ RootBridgeIoFreeBuffer ( } /** - Flushes all PCI posted write transactions from a PCI host bridge to system memory. + Flushes all PCI posted write transactions from a PCI host bridge to system + memory. - The Flush() function flushes any PCI posted write transactions from a PCI host bridge to system - memory. Posted write transactions are generated by PCI bus masters when they perform write - transactions to target addresses in system memory. - This function does not flush posted write transactions from any PCI bridges. A PCI controller - specific action must be taken to guarantee that the posted write transactions have been flushed from - the PCI controller and from all the PCI bridges into the PCI host bridge. This is typically done with - a PCI read transaction from the PCI controller prior to calling Flush(). + The Flush() function flushes any PCI posted write transactions from a PCI + host bridge to system memory. Posted write transactions are generated by PCI + bus masters when they perform write transactions to target addresses in + system memory. + This function does not flush posted write transactions from any PCI bridges. + A PCI controller specific action must be taken to guarantee that the posted + write transactions have been flushed from the PCI controller and from all the + PCI bridges into the PCI host bridge. This is typically done with a PCI read + transaction from the PCI controller prior to calling Flush(). - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - - @retval EFI_SUCCESS The PCI posted write transactions were flushed from the PCI host - bridge to system memory. - @retval EFI_DEVICE_ERROR The PCI posted write transactions were not flushed from the PCI - host bridge due to a hardware error. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @retval EFI_SUCCESS The PCI posted write transactions were flushed + from the PCI host bridge to system memory. + + @retval EFI_DEVICE_ERROR The PCI posted write transactions were not flushed + from the PCI host bridge due to a hardware error. **/ EFI_STATUS EFIAPI @@ -2008,24 +2407,29 @@ RootBridgeIoFlush ( } /** - Gets the attributes that a PCI root bridge supports setting with SetAttributes(), and the - attributes that a PCI root bridge is currently using. + Gets the attributes that a PCI root bridge supports setting with + SetAttributes(), and the attributes that a PCI root bridge is currently + using. - The GetAttributes() function returns the mask of attributes that this PCI root bridge supports - and the mask of attributes that the PCI root bridge is currently using. + The GetAttributes() function returns the mask of attributes that this PCI + root bridge supports and the mask of attributes that the PCI root bridge is + currently using. - @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param Supported A pointer to the mask of attributes that this PCI root bridge - supports setting with SetAttributes(). - @param Attributes A pointer to the mask of attributes that this PCI root bridge is - currently using. - - @retval EFI_SUCCESS If Supports is not NULL, then the attributes that the PCI root - bridge supports is returned in Supports. If Attributes is - not NULL, then the attributes that the PCI root bridge is currently - using is returned in Attributes. - @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL. + @param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param Supported A pointer to the mask of attributes that this PCI root + bridge supports setting with SetAttributes(). + + @param Attributes A pointer to the mask of attributes that this PCI root + bridge is currently using. + + @retval EFI_SUCCESS If Supports is not NULL, then the attributes + that the PCI root bridge supports is returned + in Supports. If Attributes is not NULL, then + the attributes that the PCI root bridge is + currently using is returned in Attributes. + + @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL. **/ EFI_STATUS EFIAPI @@ -2058,34 +2462,47 @@ RootBridgeIoGetAttributes ( } /** - Sets attributes for a resource range on a PCI root bridge. + Sets attributes for a resource range on a PCI root bridge. - The SetAttributes() function sets the attributes specified in Attributes for the PCI root - bridge on the resource range specified by ResourceBase and ResourceLength. Since the - granularity of setting these attributes may vary from resource type to resource type, and from - platform to platform, the actual resource range and the one passed in by the caller may differ. As a - result, this function may set the attributes specified by Attributes on a larger resource range - than the caller requested. The actual range is returned in ResourceBase and - ResourceLength. The caller is responsible for verifying that the actual range for which the - attributes were set is acceptable. + The SetAttributes() function sets the attributes specified in Attributes for + the PCI root bridge on the resource range specified by ResourceBase and + ResourceLength. Since the granularity of setting these attributes may vary + from resource type to resource type, and from platform to platform, the + actual resource range and the one passed in by the caller may differ. As a + result, this function may set the attributes specified by Attributes on a + larger resource range than the caller requested. The actual range is returned + in ResourceBase and ResourceLength. The caller is responsible for verifying + that the actual range for which the attributes were set is acceptable. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[in] Attributes The mask of attributes to set. If the attribute bit - MEMORY_WRITE_COMBINE, MEMORY_CACHED, or - MEMORY_DISABLE is set, then the resource range is specified by - ResourceBase and ResourceLength. If - MEMORY_WRITE_COMBINE, MEMORY_CACHED, and - MEMORY_DISABLE are not set, then ResourceBase and - ResourceLength are ignored, and may be NULL. - @param[in, out] ResourceBase A pointer to the base address of the resource range to be modified - by the attributes specified by Attributes. - @param[in, out] ResourceLength A pointer to the length of the resource range to be modified by the - attributes specified by Attributes. - - @retval EFI_SUCCESS The current configuration of this PCI root bridge was returned in Resources. - @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge could not be retrieved. - @retval EFI_INVALID_PARAMETER Invalid pointer of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + @param[in] This A pointer to the + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[in] Attributes The mask of attributes to set. If the + attribute bit MEMORY_WRITE_COMBINE, + MEMORY_CACHED, or MEMORY_DISABLE is set, + then the resource range is specified by + ResourceBase and ResourceLength. If + MEMORY_WRITE_COMBINE, MEMORY_CACHED, and + MEMORY_DISABLE are not set, then + ResourceBase and ResourceLength are ignored, + and may be NULL. + + @param[in, out] ResourceBase A pointer to the base address of the + resource range to be modified by the + attributes specified by Attributes. + + @param[in, out] ResourceLength A pointer to the length of the resource + range to be modified by the attributes + specified by Attributes. + + @retval EFI_SUCCESS The current configuration of this PCI root bridge + was returned in Resources. + + @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge + could not be retrieved. + + @retval EFI_INVALID_PARAMETER Invalid pointer of + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL **/ EFI_STATUS EFIAPI @@ -2120,27 +2537,35 @@ RootBridgeIoSetAttributes ( } /** - Retrieves the current resource settings of this PCI root bridge in the form of a set of ACPI 2.0 - resource descriptors. + Retrieves the current resource settings of this PCI root bridge in the form + of a set of ACPI 2.0 resource descriptors. - There are only two resource descriptor types from the ACPI Specification that may be used to - describe the current resources allocated to a PCI root bridge. These are the QWORD Address - Space Descriptor (ACPI 2.0 Section 6.4.3.5.1), and the End Tag (ACPI 2.0 Section 6.4.2.8). The - QWORD Address Space Descriptor can describe memory, I/O, and bus number ranges for dynamic - or fixed resources. The configuration of a PCI root bridge is described with one or more QWORD - Address Space Descriptors followed by an End Tag. + There are only two resource descriptor types from the ACPI Specification that + may be used to describe the current resources allocated to a PCI root bridge. + These are the QWORD Address Space Descriptor (ACPI 2.0 Section 6.4.3.5.1), + and the End Tag (ACPI 2.0 Section 6.4.2.8). The QWORD Address Space + Descriptor can describe memory, I/O, and bus number ranges for dynamic or + fixed resources. The configuration of a PCI root bridge is described with one + or more QWORD Address Space Descriptors followed by an End Tag. - @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. - @param[out] Resources A pointer to the ACPI 2.0 resource descriptors that describe the - current configuration of this PCI root bridge. The storage for the - ACPI 2.0 resource descriptors is allocated by this function. The - caller must treat the return buffer as read-only data, and the buffer - must not be freed by the caller. - - @retval EFI_SUCCESS The current configuration of this PCI root bridge was returned in Resources. - @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge could not be retrieved. - @retval EFI_INVALID_PARAMETER Invalid pointer of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL + @param[in] This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. + @param[out] Resources A pointer to the ACPI 2.0 resource descriptors that + describe the current configuration of this PCI root + bridge. The storage for the ACPI 2.0 resource + descriptors is allocated by this function. The + caller must treat the return buffer as read-only + data, and the buffer must not be freed by the + caller. + + @retval EFI_SUCCESS The current configuration of this PCI root bridge + was returned in Resources. + + @retval EFI_UNSUPPORTED The current configuration of this PCI root bridge + could not be retrieved. + + @retval EFI_INVALID_PARAMETER Invalid pointer of + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL **/ EFI_STATUS EFIAPI