dma: move dma_ops to dma-uclass.h
[oweals/u-boot.git] / include / dma.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2015
4  *     Texas Instruments Incorporated, <www.ti.com>
5  */
6
7 #ifndef _DMA_H_
8 #define _DMA_H_
9
10 /*
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
16  */
17 enum dma_direction {
18         DMA_MEM_TO_MEM,
19         DMA_MEM_TO_DEV,
20         DMA_DEV_TO_MEM,
21         DMA_DEV_TO_DEV,
22 };
23
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)
28
29 /*
30  * struct dma_dev_priv - information about a device used by the uclass
31  *
32  * @supported: mode of transfers that DMA can support, should be
33  *             one/multiple of DMA_SUPPORTS_*
34  */
35 struct dma_dev_priv {
36         u32 supported;
37 };
38
39 /*
40  * dma_get_device - get a DMA device which supports transfer
41  * type of transfer_type
42  *
43  * @transfer_type - transfer type should be one/multiple of
44  *                  DMA_SUPPORTS_*
45  * @devp - udevice pointer to return the found device
46  * @return - will return on success and devp will hold the
47  *           pointer to the device
48  */
49 int dma_get_device(u32 transfer_type, struct udevice **devp);
50
51 /*
52  * dma_memcpy - try to use DMA to do a mem copy which will be
53  *              much faster than CPU mem copy
54  *
55  * @dst - destination pointer
56  * @src - souce pointer
57  * @len - data length to be copied
58  * @return - on successful transfer returns no of bytes
59              transferred and on failure return error code.
60  */
61 int dma_memcpy(void *dst, void *src, size_t len);
62
63 #endif  /* _DMA_H_ */