diff options
Diffstat (limited to 'arch/arm/mach-tegra/include/mach/dma.h')
| -rw-r--r-- | arch/arm/mach-tegra/include/mach/dma.h | 97 | 
1 files changed, 0 insertions, 97 deletions
diff --git a/arch/arm/mach-tegra/include/mach/dma.h b/arch/arm/mach-tegra/include/mach/dma.h index 9077092812c..3081cc6dda3 100644 --- a/arch/arm/mach-tegra/include/mach/dma.h +++ b/arch/arm/mach-tegra/include/mach/dma.h @@ -51,101 +51,4 @@  #define TEGRA_DMA_REQ_SEL_OWR			25  #define TEGRA_DMA_REQ_SEL_INVALID		31 -struct tegra_dma_req; -struct tegra_dma_channel; - -enum tegra_dma_mode { -	TEGRA_DMA_SHARED = 1, -	TEGRA_DMA_MODE_CONTINOUS = 2, -	TEGRA_DMA_MODE_ONESHOT = 4, -}; - -enum tegra_dma_req_error { -	TEGRA_DMA_REQ_SUCCESS = 0, -	TEGRA_DMA_REQ_ERROR_ABORTED, -	TEGRA_DMA_REQ_INFLIGHT, -}; - -enum tegra_dma_req_buff_status { -	TEGRA_DMA_REQ_BUF_STATUS_EMPTY = 0, -	TEGRA_DMA_REQ_BUF_STATUS_HALF_FULL, -	TEGRA_DMA_REQ_BUF_STATUS_FULL, -}; - -struct tegra_dma_req { -	struct list_head node; -	unsigned int modid; -	int instance; - -	/* Called when the req is complete and from the DMA ISR context. -	 * When this is called the req structure is no longer queued by -	 * the DMA channel. -	 * -	 * State of the DMA depends on the number of req it has. If there are -	 * no DMA requests queued up, then it will STOP the DMA. It there are -	 * more requests in the DMA, then it will queue the next request. -	 */ -	void (*complete)(struct tegra_dma_req *req); - -	/*  This is a called from the DMA ISR context when the DMA is still in -	 *  progress and is actively filling same buffer. -	 * -	 *  In case of continuous mode receive, this threshold is 1/2 the buffer -	 *  size. In other cases, this will not even be called as there is no -	 *  hardware support for it. -	 * -	 * In the case of continuous mode receive, if there is next req already -	 * queued, DMA programs the HW to use that req when this req is -	 * completed. If there is no "next req" queued, then DMA ISR doesn't do -	 * anything before calling this callback. -	 * -	 *	This is mainly used by the cases, where the clients has queued -	 *	only one req and want to get some sort of DMA threshold -	 *	callback to program the next buffer. -	 * -	 */ -	void (*threshold)(struct tegra_dma_req *req); - -	/* 1 to copy to memory. -	 * 0 to copy from the memory to device FIFO */ -	int to_memory; - -	void *virt_addr; - -	unsigned long source_addr; -	unsigned long dest_addr; -	unsigned long dest_wrap; -	unsigned long source_wrap; -	unsigned long source_bus_width; -	unsigned long dest_bus_width; -	unsigned long req_sel; -	unsigned int size; - -	/* Updated by the DMA driver on the conpletion of the request. */ -	int bytes_transferred; -	int status; - -	/* DMA completion tracking information */ -	int buffer_status; - -	/* Client specific data */ -	void *dev; -}; - -int tegra_dma_enqueue_req(struct tegra_dma_channel *ch, -	struct tegra_dma_req *req); -int tegra_dma_dequeue_req(struct tegra_dma_channel *ch, -	struct tegra_dma_req *req); -void tegra_dma_dequeue(struct tegra_dma_channel *ch); -void tegra_dma_flush(struct tegra_dma_channel *ch); - -bool tegra_dma_is_req_inflight(struct tegra_dma_channel *ch, -	struct tegra_dma_req *req); -bool tegra_dma_is_empty(struct tegra_dma_channel *ch); - -struct tegra_dma_channel *tegra_dma_allocate_channel(int mode); -void tegra_dma_free_channel(struct tegra_dma_channel *ch); - -int __init tegra_dma_init(void); -  #endif  |