![]() |
RT-Thread RTOS
An open source embedded real-time operating system
|
#include <dma.h>
Data Fields | |
| void *(* | alloc )(struct rt_device *dev, rt_size_t size, rt_ubase_t *dma_handle, rt_ubase_t flags) |
| void(* | free )(struct rt_device *dev, rt_size_t size, void *cpu_addr, rt_ubase_t dma_handle, rt_ubase_t flags) |
| rt_err_t(* | sync_out_data )(struct rt_device *dev, void *data, rt_size_t size, rt_ubase_t *dma_handle, rt_ubase_t flags) |
| rt_err_t(* | sync_in_data )(struct rt_device *dev, void *out_data, rt_size_t size, rt_ubase_t dma_handle, rt_ubase_t flags) |
DMA memory mapping operations vtable.
Abstracts device-specific DMA memory management: allocation, freeing, and cache synchronization for coherent and non-coherent devices. Devices may override these via dev->dma_ops or the device tree.
| void*(* rt_dma_map_ops::alloc) (struct rt_device *dev, rt_size_t size, rt_ubase_t *dma_handle, rt_ubase_t flags) |
Allocate a DMA buffer (optional, may fall back to default)
| [in] | dev | DMA-capable device |
| [in] | size | Requested size in bytes |
| [out] | dma_handle | Physical DMA address |
| [in] | flags | Allocation flags (RT_DMA_F_*) |
| void(* rt_dma_map_ops::free) (struct rt_device *dev, rt_size_t size, void *cpu_addr, rt_ubase_t dma_handle, rt_ubase_t flags) |
Free a DMA buffer (optional)
| [in] | dev | DMA-capable device |
| [in] | size | Buffer size in bytes |
| [in] | cpu_addr | Kernel virtual address |
| [in] | dma_handle | Physical DMA address |
| [in] | flags | Allocation flags |
| rt_err_t(* rt_dma_map_ops::sync_out_data) (struct rt_device *dev, void *data, rt_size_t size, rt_ubase_t *dma_handle, rt_ubase_t flags) |
Synchronize data for DMA output (CPU → device)
Performs any necessary cache flush and returns the DMA bus address.
| [in] | dev | DMA-capable device |
| [in] | data | Virtual address of data buffer |
| [in] | size | Buffer size in bytes |
| [out] | dma_handle | DMA bus address (may be NULL) |
| [in] | flags | Sync flags |
| rt_err_t(* rt_dma_map_ops::sync_in_data) (struct rt_device *dev, void *out_data, rt_size_t size, rt_ubase_t dma_handle, rt_ubase_t flags) |
Synchronize data for DMA input (device → CPU)
Performs any necessary cache invalidation.
| [in] | dev | DMA-capable device |
| [in] | out_data | Virtual address of data buffer |
| [in] | size | Buffer size in bytes |
| [in] | dma_handle | DMA bus address |
| [in] | flags | Sync flags |