1 /* SPDX-License-Identifier: GPL-2.0+ */
4 * Texas Instruments Incorporated, <www.ti.com>
11 * enum dma_direction - dma transfer direction indicator
12 * @DMA_MEM_TO_MEM: Memcpy mode
13 * @DMA_MEM_TO_DEV: From Memory to Device
14 * @DMA_DEV_TO_MEM: From Device to Memory
15 * @DMA_DEV_TO_DEV: From Device to Device
24 #define DMA_SUPPORTS_MEM_TO_MEM BIT(0)
25 #define DMA_SUPPORTS_MEM_TO_DEV BIT(1)
26 #define DMA_SUPPORTS_DEV_TO_MEM BIT(2)
27 #define DMA_SUPPORTS_DEV_TO_DEV BIT(3)
30 * struct dma_ops - Driver model DMA operations
32 * The uclass interface is implemented by all DMA devices which use
37 * Get the current timer count
39 * @dev: The DMA device
40 * @direction: direction of data transfer should be one from
42 * @dst: Destination pointer
43 * @src: Source pointer
44 * @len: Length of the data to be copied.
45 * @return: 0 if OK, -ve on error
47 int (*transfer)(struct udevice *dev, int direction, void *dst,
48 void *src, size_t len);
52 * struct dma_dev_priv - information about a device used by the uclass
54 * @supported: mode of transfers that DMA can support, should be
55 * one/multiple of DMA_SUPPORTS_*
62 * dma_get_device - get a DMA device which supports transfer
63 * type of transfer_type
65 * @transfer_type - transfer type should be one/multiple of
67 * @devp - udevice pointer to return the found device
68 * @return - will return on success and devp will hold the
69 * pointer to the device
71 int dma_get_device(u32 transfer_type, struct udevice **devp);
74 * dma_memcpy - try to use DMA to do a mem copy which will be
75 * much faster than CPU mem copy
77 * @dst - destination pointer
78 * @src - souce pointer
79 * @len - data length to be copied
80 * @return - on successful transfer returns no of bytes
81 transferred and on failure return error code.
83 int dma_memcpy(void *dst, void *src, size_t len);