Device IO is used to abstract hardware access to devices. It includes\r
memory mapped IO, IO, PCI Config space, and DMA.\r
\r
- Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
**/\r
\r
\r
///\r
/// Protocol GUID name defined in EFI1.1.\r
-/// \r
+///\r
#define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID\r
\r
///\r
/// Protocol defined in EFI1.1.\r
-/// \r
+///\r
typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE;\r
\r
///\r
-/// Device IO Access Width \r
+/// Device IO Access Width\r
///\r
typedef enum {\r
IO_UINT8 = 0,\r
IO_UINT32 = 2,\r
IO_UINT64 = 3,\r
//\r
- // Below enumerations are added in "Extensible Firmware Interface Specification, \r
+ // Below enumerations are added in "Extensible Firmware Interface Specification,\r
// Version 1.10, Specification Update, Version 001".\r
//\r
MMIO_COPY_UINT8 = 4,\r
MMIO_COPY_UINT64 = 7\r
} EFI_IO_WIDTH;\r
\r
-/** \r
+/**\r
Enables a driver to access device registers in the appropriate memory or I/O space.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
- @param Width Signifies the width of the I/O operations. \r
- @param Address The base address of the I/O operations. \r
+ @param Width Signifies the width of the I/O operations.\r
+ @param Address The base address of the I/O operations.\r
@param Count The number of I/O operations to perform.\r
@param Buffer For read operations, the destination buffer to store the results. For write\r
operations, the source buffer to write data from. If\r
Width is MMIO_COPY_UINT8, MMIO_COPY_UINT16,\r
MMIO_COPY_UINT32, or MMIO_COPY_UINT64, then\r
- Buffer is interpreted as a base address of an I/O operation such as Address. \r
+ Buffer is interpreted as a base address of an I/O operation such as Address.\r
\r
@retval EFI_SUCCESS The data was read from or written to the device.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. \r
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.\r
@retval EFI_INVALID_PARAMETER Width is invalid.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
EFI_DEVICE_IO Write;\r
} EFI_IO_ACCESS;\r
\r
-/** \r
+/**\r
Provides an EFI Device Path for a PCI device with the given PCI configuration space address.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
@param PciAddress The PCI configuration space address of the device whose Device Path\r
- is going to be returned. \r
+ is going to be returned.\r
@param PciDevicePath A pointer to the pointer for the EFI Device Path for PciAddress.\r
- Memory for the Device Path is allocated from the pool. \r
+ Memory for the Device Path is allocated from the pool.\r
\r
@retval EFI_SUCCESS The PciDevicePath returns a pointer to a valid EFI Device Path.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. \r
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.\r
@retval EFI_UNSUPPORTED The PciAddress does not map to a valid EFI Device Path.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
/// A write operation to system memory by a bus master.\r
///\r
EfiBusMasterWrite,\r
- \r
+\r
///\r
/// Provides both read and write access to system memory\r
/// by both the processor and a bus master. The buffer is\r
EfiBusMasterCommonBuffer\r
} EFI_IO_OPERATION_TYPE;\r
\r
-/** \r
+/**\r
Provides the device-specific addresses needed to access system memory.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
@param Operation Indicates if the bus master is going to read or write to system memory.\r
@param HostAddress The system memory address to map to the device.\r
@param Mapping A resulting value to pass to Unmap().\r
\r
@retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.\r
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. \r
+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.\r
@retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.\r
@retval EFI_INVALID_PARAMETER The Operation or HostAddress is undefined.\r
@retval EFI_DEVICE_ERROR The system hardware could not map the requested address.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
OUT VOID **Mapping\r
);\r
\r
-/** \r
+/**\r
Completes the Map() operation and releases any corresponding resources.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
@param Mapping A resulting value to pass to Unmap().\r
\r
@retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.\r
@retval EFI_DEVICE_ERROR The system hardware could not map the requested address.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
IN VOID *Mapping\r
);\r
\r
-/** \r
+/**\r
Allocates pages that are suitable for an EFIBusMasterCommonBuffer mapping.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
@param Type The type allocation to perform.\r
@param MemoryType The type of memory to allocate, EfiBootServicesData or\r
EfiRuntimeServicesData.\r
@param Pages The number of pages to allocate.\r
- @param HostAddress A pointer to store the base address of the allocated range. \r
+ @param HostAddress A pointer to store the base address of the allocated range.\r
\r
@retval EFI_SUCCESS The requested memory pages were allocated.\r
@retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.\r
@retval EFI_INVALID_PARAMETER The requested memory type is invalid.\r
@retval EFI_UNSUPPORTED The requested HostAddress is not supported on\r
- this platform. \r
- \r
+ this platform.\r
+\r
**/\r
typedef\r
EFI_STATUS\r
IN OUT EFI_PHYSICAL_ADDRESS *HostAddress\r
);\r
\r
-/** \r
+/**\r
Flushes any posted write data to the device.\r
- \r
+\r
@param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
\r
@retval EFI_SUCCESS The buffers were flushed.\r
- @retval EFI_DEVICE_ERROR The buffers were not flushed due to a hardware error. \r
- \r
+ @retval EFI_DEVICE_ERROR The buffers were not flushed due to a hardware error.\r
+\r
**/\r
typedef\r
EFI_STATUS\r
IN EFI_DEVICE_IO_PROTOCOL *This\r
);\r
\r
-/** \r
+/**\r
Frees pages that were allocated with AllocateBuffer().\r
- \r
- @param This A pointer to the EFI_DEVICE_IO_INTERFACE instance. \r
+\r
+ @param This A pointer to the EFI_DEVICE_IO_INTERFACE instance.\r
@param Pages The number of pages to free.\r
@param HostAddress The base address of the range to free.\r
\r
@retval EFI_SUCCESS The requested memory pages were allocated.\r
@retval EFI_NOT_FOUND The requested memory pages were not allocated with\r
- AllocateBuffer(). \r
+ AllocateBuffer().\r
@retval EFI_INVALID_PARAMETER HostAddress is not page aligned or Pages is invalid.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
);\r
\r
///\r
-/// This protocol provides the basic Memory, I/O, and PCI interfaces that \r
+/// This protocol provides the basic Memory, I/O, and PCI interfaces that\r
/// are used to abstract accesses to devices.\r
///\r
struct _EFI_DEVICE_IO_PROTOCOL {\r