OvmfPkg[all]
0.1
|
Data Structures | |
struct | EFI_ISA_IO_PROTOCOL_ACCESS |
struct | _EFI_ISA_IO_PROTOCOL |
Macros | |
#define | EFI_ISA_IO_PROTOCOL_GUID |
#define | EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 |
Map a memory range so write are combined. More... | |
#define | EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 |
Map a memory range so all read and write accesses are cached. More... | |
#define | EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 |
Disable a memory range. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001 |
Set the speed of the DMA transfer in compatible mode. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002 |
Not supported. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004 |
Not supported. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008 |
Not supported. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010 |
Request 8-bit DMA transfers. Only available on channels 0..3. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020 |
Request 16-bit DMA transfers. Only available on channels 4..7. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040 |
Request a single DMA transfer. More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080 |
Request multiple DMA transfers until TC (Terminal Count) or EOP (End of Process). More... | |
#define | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100 |
Automatically reload base and count at the end of the DMA transfer. More... | |
Variables | |
EFI_GUID | gEfiIsaIoProtocolGuid |
ISA I/O Protocol is used by ISA device drivers to perform I/O, MMIO and DMA operations on the ISA controllers they manage.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 |
Map a memory range so all read and write accesses are cached.
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 |
Disable a memory range.
#define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 |
Map a memory range so write are combined.
Attributes for the EFI_ISA_IO_PROTOCOL common DMA buffer allocations.
#define EFI_ISA_IO_PROTOCOL_GUID |
Global ID for the EFI_ISA_IO_PROTOCOL
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100 |
Automatically reload base and count at the end of the DMA transfer.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080 |
Request multiple DMA transfers until TC (Terminal Count) or EOP (End of Process).
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040 |
Request a single DMA transfer.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002 |
Not supported.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004 |
Not supported.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008 |
Not supported.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001 |
Set the speed of the DMA transfer in compatible mode.
Channel attribute for EFI_ISA_IO_PROTOCOL slave DMA requests
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020 |
Request 16-bit DMA transfers. Only available on channels 4..7.
#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010 |
Request 8-bit DMA transfers. Only available on channels 0..3.
typedef struct _EFI_ISA_IO_PROTOCOL EFI_ISA_IO_PROTOCOL |
Forward declaration for the EFI_ISA_IO_PROTOCOL.
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER)(IN EFI_ISA_IO_PROTOCOL *This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINTN Pages, OUT VOID **HostAddress, IN UINT64 Attributes) |
Allocates pages that are suitable for an EfiIsaIoOperationBusMasterCommonBuffer mapping.
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Type | The type allocation to perform. |
[in] | MemoryType | The type of memory to allocate. |
[in] | Pages | The number of pages to allocate. |
[out] | HostAddress | A pointer to store the base address of the allocated range. |
[in] | Attributes | The requested bit mask of attributes for the allocated range. |
EFI_SUCCESS | The requested memory pages were allocated. |
EFI_INVALID_PARAMETER | Type is invalid. |
EFI_INVALID_PARAMETER | MemoryType is invalid. |
EFI_INVALID_PARAMETER | HostAddress is NULL. |
EFI_UNSUPPORTED | Attributes is unsupported. |
EFI_UNSUPPORTED | The memory range specified by HostAddress, Pages, and Type is not available for common buffer use. |
EFI_OUT_OF_RESOURCES | The memory pages could not be allocated. |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_COPY_MEM)(IN EFI_ISA_IO_PROTOCOL *This, IN EFI_ISA_IO_PROTOCOL_WIDTH Width, IN UINT32 DestOffset, IN UINT32 SrcOffset, IN UINTN Count) |
Copies data from one region of ISA MMIO space to another region of ISA MMIO space.
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Width | Specifies the width of the MMIO copy operation. |
[in] | DestOffset | The offset of the destination in ISA MMIO space. |
[in] | SrcOffset | The offset of the source in ISA MMIO space. |
[in] | Count | The number tranfers to perform for this copy operation. |
EFI_SUCCESS | The data was copied successfully. |
EFI_UNSUPPORTED | The DestOffset or SrcOffset is not valid for this device. |
EFI_INVALID_PARAMETER | Width or Count, or both, were invalid. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_FLUSH)(IN EFI_ISA_IO_PROTOCOL *This) |
Flushes a DMA buffer, which forces all DMA posted write transactions to complete.
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
EFI_SUCCESS | The DMA buffers were flushed. |
EFI_DEVICE_ERROR | The buffers were not flushed due to a hardware error. |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_FREE_BUFFER)(IN EFI_ISA_IO_PROTOCOL *This, IN UINTN Pages, IN VOID *HostAddress) |
Frees a common buffer that was allocated with EFI_ISA_IO_PROTOCOL.AllocateBuffer().
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Pages | The number of pages to free from the previously allocated common buffer. |
[in] | HostAddress | The base address of the previously allocated common buffer. |
EFI_SUCCESS | The requested memory pages were freed. |
EFI_INVALID_PARAMETER | The memory was not allocated with EFI_ISA_IO.AllocateBufer(). |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_IO_MEM)(IN EFI_ISA_IO_PROTOCOL *This, IN EFI_ISA_IO_PROTOCOL_WIDTH Width, IN UINT32 Offset, IN UINTN Count, IN OUT VOID *Buffer) |
Performs ISA I/O and MMIO Read/Write Cycles
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Width | Specifies the width of the I/O or MMIO operation. |
[in] | Offset | The offset into the ISA I/O or MMIO space to start the operation. |
[in] | Count | The number of I/O or MMIO operations to perform. |
[in,out] | Buffer | For read operations, the destination buffer to store the results. For write operations, the source buffer to write data from. |
EFI_SUCCESS | The data was successfully read from or written to the device. |
EFI_UNSUPPORTED | The Offset is not valid for this device. |
EFI_INVALID_PARAMETER | Width or Count, or both, were invalid. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_MAP)(IN EFI_ISA_IO_PROTOCOL *This, IN EFI_ISA_IO_PROTOCOL_OPERATION Operation, IN UINT8 ChannelNumber, IN UINT32 ChannelAttributes, IN VOID *HostAddress, IN OUT UINTN *NumberOfBytes, OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, OUT VOID **Mapping) |
Maps a memory region for DMA.
This function returns the device-specific addresses required to access system memory. This function is used to map system memory for ISA DMA operations. All ISA DMA operations must be performed through their mapped addresses, and such mappings must be freed with EFI_ISA_IO_PROTOCOL.Unmap() after the DMA operation is completed.
If the DMA operation is a single read or write data transfer through an ISA bus master, then EfiIsaIoOperationBusMasterRead or EfiIsaIoOperationBusMasterWrite is used and the range is unmapped to complete the operation. If the DMA operation is a single read or write data transfer through an ISA slave controller, then EfiIsaIoOperationSlaveRead or EfiIsaIoOperationSlaveWrite is used and the range is unmapped to complete the operation.
If performing a DMA read operation, all the data must be present in system memory before the Map() is performed. Similarly, if performing a DMA write operation, the data must not be accessed in system memory until EFI_ISA_IO_PROTOCOL.Unmap() is performed. Bus master operations that require both read and write access or require multiple host device interactions within the same mapped region must use EfiIsaIoOperationBusMasterCommonBuffer. However, only memory allocated via the EFI_ISA_IO_PROTOCOL.AllocateBuffer() interface is guaranteed to be able to be mapped for this operation type. In all mapping requests the NumberOfBytes returned may be less than originally requested. It is the caller's responsibility to make additional requests to complete the entire transfer.
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Operation | Indicates the type of DMA (slave or bus master), and if the DMA operation is going to read or write to system memory. |
[in] | ChannelNumber | The slave channel number to use for this DMA operation. If Operation and ChannelAttributes shows that this device performs bus mastering DMA, then this field is ignored. The legal range for this field is 0..7. |
[in] | ChannelAttributes | A bitmask of the attributes used to configure the slave DMA channel for this DMA operation. See EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_* for the legal bit combinations. |
[in] | HostAddress | The system memory address to map to the device. |
[in,out] | NumberOfBytes | On input the number of bytes to map. On output the number of bytes that were mapped. |
[out] | DeviceAddress | The resulting map address for the bus master device to use to access the hosts HostAddress. |
[out] | Mapping | A returned value that must be passed to into EFI_ISA_IO_PROTOCOL.Unmap() to free all the the resources associated with this map request. |
EFI_SUCCESS | The range was mapped for the returned NumberOfBytes. |
EFI_INVALID_PARAMETER | The Operation is undefined. |
EFI_INVALID_PARAMETER | The HostAddress is undefined. |
EFI_UNSUPPORTED | The HostAddress can not be mapped as a common buffer. |
EFI_DEVICE_ERROR | The system hardware could not map the requested address. |
EFI_OUT_OF_RESOURCES | The memory pages could not be allocated. |
typedef EFI_STATUS(EFIAPI * EFI_ISA_IO_PROTOCOL_UNMAP)(IN EFI_ISA_IO_PROTOCOL *This, IN VOID *Mapping) |
Unmaps a memory region that was previously mapped with EFI_ISA_IO_PROTOCOL.Map().
The EFI_ISA_IO_PROTOCOL.Map() operation is completed and any corresponding resources are released. If the operation was EfiIsaIoOperationSlaveWrite or EfiIsaIoOperationBusMasterWrite, the data is committed to system memory. Any resources used for the mapping are freed.
[in] | This | A pointer to the EFI_ISA_IO_PROTOCOL instance. |
[in] | Mapping | The mapping value returned from EFI_ISA_IO_PROTOCOL.Map(). |
EFI_SUCCESS | The memory region was unmapped. |
EFI_DEVICE_ERROR | The data was not committed to the target system memory. |
The DMA opreration type for EFI_ISA_IO_PROTOCOL DMA requests.
Width of EFI_ISA_IO_PROTOCOL I/O Port and MMIO operations.
EFI_GUID gEfiIsaIoProtocolGuid |