1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*
- * (C) Copyright 2015
- * Texas Instruments Incorporated, <www.ti.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #ifndef _DMA_H_
- #define _DMA_H_
- /*
- * enum dma_direction - dma transfer direction indicator
- * @DMA_MEM_TO_MEM: Memcpy mode
- * @DMA_MEM_TO_DEV: From Memory to Device
- * @DMA_DEV_TO_MEM: From Device to Memory
- * @DMA_DEV_TO_DEV: From Device to Device
- */
- enum dma_direction {
- DMA_MEM_TO_MEM,
- DMA_MEM_TO_DEV,
- DMA_DEV_TO_MEM,
- DMA_DEV_TO_DEV,
- };
- #define DMA_SUPPORTS_MEM_TO_MEM BIT(0)
- #define DMA_SUPPORTS_MEM_TO_DEV BIT(1)
- #define DMA_SUPPORTS_DEV_TO_MEM BIT(2)
- #define DMA_SUPPORTS_DEV_TO_DEV BIT(3)
- /*
- * struct dma_ops - Driver model DMA operations
- *
- * The uclass interface is implemented by all DMA devices which use
- * driver model.
- */
- struct dma_ops {
- /*
- * Get the current timer count
- *
- * @dev: The DMA device
- * @direction: direction of data transfer should be one from
- enum dma_direction
- * @dst: Destination pointer
- * @src: Source pointer
- * @len: Length of the data to be copied.
- * @return: 0 if OK, -ve on error
- */
- int (*transfer)(struct udevice *dev, int direction, void *dst,
- void *src, size_t len);
- };
- /*
- * struct dma_dev_priv - information about a device used by the uclass
- *
- * @supported: mode of transfers that DMA can support, should be
- * one/multiple of DMA_SUPPORTS_*
- */
- struct dma_dev_priv {
- u32 supported;
- };
- /*
- * dma_get_device - get a DMA device which supports transfer
- * type of transfer_type
- *
- * @transfer_type - transfer type should be one/multiple of
- * DMA_SUPPORTS_*
- * @devp - udevice pointer to return the found device
- * @return - will return on success and devp will hold the
- * pointer to the device
- */
- int dma_get_device(u32 transfer_type, struct udevice **devp);
- /*
- * dma_memcpy - try to use DMA to do a mem copy which will be
- * much faster than CPU mem copy
- *
- * @dst - destination pointer
- * @src - souce pointer
- * @len - data length to be copied
- * @return - on successful transfer returns no of bytes
- transferred and on failure return error code.
- */
- int dma_memcpy(void *dst, void *src, size_t len);
- #endif /* _DMA_H_ */
|