1
2
3
4
5
6#ifndef __ASM_ARCH_MXC_DMA_H__
7#define __ASM_ARCH_MXC_DMA_H__
8
9#include <linux/scatterlist.h>
10#include <linux/device.h>
11#include <linux/dmaengine.h>
12
13
14
15
16enum sdma_peripheral_type {
17 IMX_DMATYPE_SSI,
18 IMX_DMATYPE_SSI_SP,
19 IMX_DMATYPE_MMC,
20 IMX_DMATYPE_SDHC,
21 IMX_DMATYPE_UART,
22 IMX_DMATYPE_UART_SP,
23 IMX_DMATYPE_FIRI,
24 IMX_DMATYPE_CSPI,
25 IMX_DMATYPE_CSPI_SP,
26 IMX_DMATYPE_SIM,
27 IMX_DMATYPE_ATA,
28 IMX_DMATYPE_CCM,
29 IMX_DMATYPE_EXT,
30 IMX_DMATYPE_MSHC,
31 IMX_DMATYPE_MSHC_SP,
32 IMX_DMATYPE_DSP,
33 IMX_DMATYPE_MEMORY,
34 IMX_DMATYPE_FIFO_MEMORY,
35 IMX_DMATYPE_SPDIF,
36 IMX_DMATYPE_IPU_MEMORY,
37 IMX_DMATYPE_ASRC,
38 IMX_DMATYPE_ESAI,
39 IMX_DMATYPE_SSI_DUAL,
40 IMX_DMATYPE_ASRC_SP,
41 IMX_DMATYPE_SAI,
42};
43
44enum imx_dma_prio {
45 DMA_PRIO_HIGH = 0,
46 DMA_PRIO_MEDIUM = 1,
47 DMA_PRIO_LOW = 2
48};
49
50struct imx_dma_data {
51 int dma_request;
52 int dma_request2;
53 enum sdma_peripheral_type peripheral_type;
54 int priority;
55};
56
57static inline int imx_dma_is_ipu(struct dma_chan *chan)
58{
59 return !strcmp(dev_name(chan->device->dev), "ipu-core");
60}
61
62static inline int imx_dma_is_general_purpose(struct dma_chan *chan)
63{
64 return !strcmp(chan->device->dev->driver->name, "imx-sdma") ||
65 !strcmp(chan->device->dev->driver->name, "imx-dma");
66}
67
68#endif
69