mirror of
https://github.com/ipxe/ipxe
synced 2026-01-31 11:39:46 +03:00
[dma] Modify DMA API to simplify calculation of medial addresses
Redefine the value stored within a DMA mapping to be the offset between physical addresses and DMA addresses within the mapped region. Provide a dma() wrapper function to calculate the DMA address for any pointer within a mapped region, thereby simplifying the use cases when a device needs to be given addresses other than the region start address. On a platform using the "flat" DMA implementation the DMA offset for any mapped region is always zero, with the result that dma_map() can be optimised away completely and dma() reduces to a straightforward call to virt_to_phys(). Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -46,6 +46,7 @@ PROVIDE_DMAAPI_INLINE ( flat, dma_unmap );
|
||||
PROVIDE_DMAAPI_INLINE ( flat, dma_alloc );
|
||||
PROVIDE_DMAAPI_INLINE ( flat, dma_free );
|
||||
PROVIDE_DMAAPI_INLINE ( flat, dma_set_mask );
|
||||
PROVIDE_DMAAPI_INLINE ( flat, dma_phys );
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@@ -138,6 +139,7 @@ PROVIDE_DMAAPI ( op, dma_unmap, dma_op_unmap );
|
||||
PROVIDE_DMAAPI ( op, dma_alloc, dma_op_alloc );
|
||||
PROVIDE_DMAAPI ( op, dma_free, dma_op_free );
|
||||
PROVIDE_DMAAPI ( op, dma_set_mask, dma_op_set_mask );
|
||||
PROVIDE_DMAAPI_INLINE ( op, dma_phys );
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user