- Maps a memory region for DMA\r
-\r
- @param This A pointer to the EFI_ISA_IO_PROTOCOL instance.\r
- @param Operation Indicates the type of DMA (slave or bus master), and if \r
- the DMA operation is going to read or write to system memory. \r
- @param ChannelNumber The slave channel number to use for this DMA operation. \r
- If Operation and ChannelAttributes shows that this device \r
- performs bus mastering DMA, then this field is ignored. \r
- The legal range for this field is 0..7. \r
- @param ChannelAttributes The attributes of the DMA channel to use for this DMA operation\r
- @param HostAddress The system memory address to map to the device. \r
- @param NumberOfBytes On input the number of bytes to map. On output the number \r
- of bytes that were mapped.\r
- @param DeviceAddress The resulting map address for the bus master device to use \r
- to access the hosts HostAddress. \r
- @param Mapping A resulting value to pass to EFI_ISA_IO.Unmap().\r
-\r
+ Maps a memory region for DMA.\r
+\r
+ This function returns the device specific addresses required to access system memory.\r
+ This function is used to map system memory for ISA DMA operations. All ISA DMA \r
+ operations must be performed through their mapped addresses and such mappings must \r
+ be freed with EFI_ISA_IO_PROTOCOL.Unmap() after the DMA operation is completed. \r
+ If the DMA operation is a single read or write data transfer through an ISA bus \r
+ master, then EfiIsaIoOperationBusMasterRead or EfiIsaIoOperationBusMasterWrite \r
+ is used and the range is unmapped to complete the operation. If the DMA operation\r
+ is a single read or write data transfer through an ISA slave controller, then \r
+ EfiIsaIoOperationSlaveRead or EfiIsaIoOperationSlaveWrite is used and the range \r
+ is unmapped to complete the operation. If performing a DMA read operation, all \r
+ the data must be present in system memory before the Map() is performed. Similarly, \r
+ if performing a DMA write operation, the data must not be accessed in system \r
+ memory until EFI_ISA_IO_PROTOCOL.Unmap() is performed. Bus master operations that \r
+ require both read and write access or require multiple host device interactions \r
+ within the same mapped region must use EfiIsaIoOperationBusMasterCommonBuffer. \r
+ However, only memory allocated via the EFI_ISA_IO_PROTOCOL.AllocateBuffer() interface \r
+ are guaranteed to be able to be mapped for this operation type. In all mapping \r
+ requests the NumberOfBytes returned may be less than originally requested. It is\r
+ the caller's responsibility to make additional requests to complete the entire\r
+ transfer.\r
+\r
+ @param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.\r
+ @param[in] Operation Indicates the type of DMA (slave or bus master), \r
+ and if the DMA operation is going to read or \r
+ write to system memory. \r
+ @param[in] ChannelNumber The slave channel number to use for this DMA \r
+ operation. If Operation and ChannelAttributes \r
+ shows that this device performs bus mastering \r
+ DMA, then this field is ignored. The legal \r
+ range for this field is 0..7.\r
+ @param[in] ChannelAttributes A bitmask of the attributes used to configure\r
+ the slave DMA channel for this DMA operation. \r
+ See EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_* for the\r
+ legal bit combinations.\r
+ @param[in] HostAddress The system memory address to map to the device.\r
+ @param[in, out] NumberOfBytes On input the number of bytes to map. On \r
+ output the number of bytes that were mapped.\r
+ @param[out] DeviceAddress The resulting map address for the bus master \r
+ device to use to access the hosts HostAddress. \r
+ @param[out] Mapping A returned value that must be passed to into\r
+ EFI_ISA_IO_PROTOCOL.Unmap() to free all the the \r
+ resources associated with this map request.\r