1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ****************************************************************************
11  ****************************************************************************/
12 #ifndef __ASM_ARCH_DMA_H
13 #define __ASM_ARCH_DMA_H
14 
15 #define OMAP_DMA_BASE (0xfffed800)
16 #define OMAP_DMA_GCR (OMAP_DMA_BASE + 0x400)
17 #define OMAP_DMA_GSCR (OMAP_DMA_BASE + 0x404)
18 #define OMAP_DMA_GRST (OMAP_DMA_BASE + 0x408)
19 #define OMAP_DMA_HW_ID (OMAP_DMA_BASE + 0x442)
20 #define OMAP_DMA_PCH2_ID (OMAP_DMA_BASE + 0x444)
21 #define OMAP_DMA_PCH0_ID (OMAP_DMA_BASE + 0x446)
22 #define OMAP_DMA_PCH1_ID (OMAP_DMA_BASE + 0x448)
23 #define OMAP_DMA_PCHG_ID (OMAP_DMA_BASE + 0x44a)
24 #define OMAP_DMA_PCHD_ID (OMAP_DMA_BASE + 0x44c)
25 #define OMAP_DMA_CAPS_0_U (OMAP_DMA_BASE + 0x44e)
26 #define OMAP_DMA_CAPS_0_L (OMAP_DMA_BASE + 0x450)
27 #define OMAP_DMA_CAPS_1_U (OMAP_DMA_BASE + 0x452)
28 #define OMAP_DMA_CAPS_1_L (OMAP_DMA_BASE + 0x454)
29 #define OMAP_DMA_CAPS_2 (OMAP_DMA_BASE + 0x456)
30 #define OMAP_DMA_CAPS_3 (OMAP_DMA_BASE + 0x458)
31 #define OMAP_DMA_CAPS_4 (OMAP_DMA_BASE + 0x45a)
32 #define OMAP_DMA_PCH2_SR (OMAP_DMA_BASE + 0x460)
33 #define OMAP_DMA_PCH0_SR (OMAP_DMA_BASE + 0x480)
34 #define OMAP_DMA_PCH1_SR (OMAP_DMA_BASE + 0x482)
35 #define OMAP_DMA_PCHD_SR (OMAP_DMA_BASE + 0x4c0)
36 
37 #define OMAP24XX_DMA_BASE (L4_24XX_BASE + 0x56000)
38 #define OMAP_DMA4_REVISION (OMAP24XX_DMA_BASE + 0x00)
39 #define OMAP_DMA4_GCR_REG (OMAP24XX_DMA_BASE + 0x78)
40 #define OMAP_DMA4_IRQSTATUS_L0 (OMAP24XX_DMA_BASE + 0x08)
41 #define OMAP_DMA4_IRQSTATUS_L1 (OMAP24XX_DMA_BASE + 0x0c)
42 #define OMAP_DMA4_IRQSTATUS_L2 (OMAP24XX_DMA_BASE + 0x10)
43 #define OMAP_DMA4_IRQSTATUS_L3 (OMAP24XX_DMA_BASE + 0x14)
44 #define OMAP_DMA4_IRQENABLE_L0 (OMAP24XX_DMA_BASE + 0x18)
45 #define OMAP_DMA4_IRQENABLE_L1 (OMAP24XX_DMA_BASE + 0x1c)
46 #define OMAP_DMA4_IRQENABLE_L2 (OMAP24XX_DMA_BASE + 0x20)
47 #define OMAP_DMA4_IRQENABLE_L3 (OMAP24XX_DMA_BASE + 0x24)
48 #define OMAP_DMA4_SYSSTATUS (OMAP24XX_DMA_BASE + 0x28)
49 #define OMAP_DMA4_CAPS_0 (OMAP24XX_DMA_BASE + 0x64)
50 #define OMAP_DMA4_CAPS_2 (OMAP24XX_DMA_BASE + 0x6c)
51 #define OMAP_DMA4_CAPS_3 (OMAP24XX_DMA_BASE + 0x70)
52 #define OMAP_DMA4_CAPS_4 (OMAP24XX_DMA_BASE + 0x74)
53 
54 #define OMAP_LOGICAL_DMA_CH_COUNT 32
55 
56 #define OMAP_DMA_CCR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x80)
57 #define OMAP_DMA_CLNK_CTRL_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x84)
58 #define OMAP_DMA_CICR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x88)
59 #define OMAP_DMA_CSR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x8c)
60 #define OMAP_DMA_CSDP_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x90)
61 #define OMAP_DMA_CEN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x94)
62 #define OMAP_DMA_CFN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x98)
63 #define OMAP_DMA_CSEI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa4)
64 #define OMAP_DMA_CSFI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa8)
65 #define OMAP_DMA_CDEI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xac)
66 #define OMAP_DMA_CDFI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb0)
67 #define OMAP_DMA_CSAC_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb4)
68 #define OMAP_DMA_CDAC_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb8)
69 
70 #define OMAP1_DMA_CSSA_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x08)
71 #define OMAP1_DMA_CSSA_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0a)
72 #define OMAP1_DMA_CDSA_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0c)
73 #define OMAP1_DMA_CDSA_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0e)
74 #define OMAP1_DMA_COLOR_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x20)
75 #define OMAP1_DMA_CCR2_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x24)
76 #define OMAP1_DMA_COLOR_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x22)
77 #define OMAP1_DMA_LCH_CTRL_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x2a)
78 
79 #define OMAP2_DMA_CSSA_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x9c)
80 #define OMAP2_DMA_CDSA_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa0)
81 #define OMAP2_DMA_CCEN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xbc)
82 #define OMAP2_DMA_CCFN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xc0)
83 #define OMAP2_DMA_COLOR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xc4)
84 
85 #define OMAP_DMA_NO_DEVICE 0
86 #define OMAP_DMA_MCSI1_TX 1
87 #define OMAP_DMA_MCSI1_RX 2
88 #define OMAP_DMA_I2C_RX 3
89 #define OMAP_DMA_I2C_TX 4
90 #define OMAP_DMA_EXT_NDMA_REQ 5
91 #define OMAP_DMA_EXT_NDMA_REQ2 6
92 #define OMAP_DMA_UWIRE_TX 7
93 #define OMAP_DMA_MCBSP1_TX 8
94 #define OMAP_DMA_MCBSP1_RX 9
95 #define OMAP_DMA_MCBSP3_TX 10
96 #define OMAP_DMA_MCBSP3_RX 11
97 #define OMAP_DMA_UART1_TX 12
98 #define OMAP_DMA_UART1_RX 13
99 #define OMAP_DMA_UART2_TX 14
100 #define OMAP_DMA_UART2_RX 15
101 #define OMAP_DMA_MCBSP2_TX 16
102 #define OMAP_DMA_MCBSP2_RX 17
103 #define OMAP_DMA_UART3_TX 18
104 #define OMAP_DMA_UART3_RX 19
105 #define OMAP_DMA_CAMERA_IF_RX 20
106 #define OMAP_DMA_MMC_TX 21
107 #define OMAP_DMA_MMC_RX 22
108 #define OMAP_DMA_NAND 23
109 #define OMAP_DMA_IRQ_LCD_LINE 24
110 #define OMAP_DMA_MEMORY_STICK 25
111 #define OMAP_DMA_USB_W2FC_RX0 26
112 #define OMAP_DMA_USB_W2FC_RX1 27
113 #define OMAP_DMA_USB_W2FC_RX2 28
114 #define OMAP_DMA_USB_W2FC_TX0 29
115 #define OMAP_DMA_USB_W2FC_TX1 30
116 #define OMAP_DMA_USB_W2FC_TX2 31
117 
118 #define OMAP_DMA_CRYPTO_DES_IN 32
119 #define OMAP_DMA_SPI_TX 33
120 #define OMAP_DMA_SPI_RX 34
121 #define OMAP_DMA_CRYPTO_HASH 35
122 #define OMAP_DMA_CCP_ATTN 36
123 #define OMAP_DMA_CCP_FIFO_NOT_EMPTY 37
124 #define OMAP_DMA_CMT_APE_TX_CHAN_0 38
125 #define OMAP_DMA_CMT_APE_RV_CHAN_0 39
126 #define OMAP_DMA_CMT_APE_TX_CHAN_1 40
127 #define OMAP_DMA_CMT_APE_RV_CHAN_1 41
128 #define OMAP_DMA_CMT_APE_TX_CHAN_2 42
129 #define OMAP_DMA_CMT_APE_RV_CHAN_2 43
130 #define OMAP_DMA_CMT_APE_TX_CHAN_3 44
131 #define OMAP_DMA_CMT_APE_RV_CHAN_3 45
132 #define OMAP_DMA_CMT_APE_TX_CHAN_4 46
133 #define OMAP_DMA_CMT_APE_RV_CHAN_4 47
134 #define OMAP_DMA_CMT_APE_TX_CHAN_5 48
135 #define OMAP_DMA_CMT_APE_RV_CHAN_5 49
136 #define OMAP_DMA_CMT_APE_TX_CHAN_6 50
137 #define OMAP_DMA_CMT_APE_RV_CHAN_6 51
138 #define OMAP_DMA_CMT_APE_TX_CHAN_7 52
139 #define OMAP_DMA_CMT_APE_RV_CHAN_7 53
140 #define OMAP_DMA_MMC2_TX 54
141 #define OMAP_DMA_MMC2_RX 55
142 #define OMAP_DMA_CRYPTO_DES_OUT 56
143 
144 #define OMAP24XX_DMA_NO_DEVICE 0
145 #define OMAP24XX_DMA_XTI_DMA 1
146 #define OMAP24XX_DMA_EXT_DMAREQ0 2
147 #define OMAP24XX_DMA_EXT_DMAREQ1 3
148 #define OMAP24XX_DMA_GPMC 4
149 #define OMAP24XX_DMA_GFX 5
150 #define OMAP24XX_DMA_DSS 6
151 #define OMAP24XX_DMA_VLYNQ_TX 7
152 #define OMAP24XX_DMA_CWT 8
153 #define OMAP24XX_DMA_AES_TX 9
154 #define OMAP24XX_DMA_AES_RX 10
155 #define OMAP24XX_DMA_DES_TX 11
156 #define OMAP24XX_DMA_DES_RX 12
157 #define OMAP24XX_DMA_SHA1MD5_RX 13
158 #define OMAP24XX_DMA_EXT_DMAREQ2 14
159 #define OMAP24XX_DMA_EXT_DMAREQ3 15
160 #define OMAP24XX_DMA_EXT_DMAREQ4 16
161 #define OMAP24XX_DMA_EAC_AC_RD 17
162 #define OMAP24XX_DMA_EAC_AC_WR 18
163 #define OMAP24XX_DMA_EAC_MD_UL_RD 19
164 #define OMAP24XX_DMA_EAC_MD_UL_WR 20
165 #define OMAP24XX_DMA_EAC_MD_DL_RD 21
166 #define OMAP24XX_DMA_EAC_MD_DL_WR 22
167 #define OMAP24XX_DMA_EAC_BT_UL_RD 23
168 #define OMAP24XX_DMA_EAC_BT_UL_WR 24
169 #define OMAP24XX_DMA_EAC_BT_DL_RD 25
170 #define OMAP24XX_DMA_EAC_BT_DL_WR 26
171 #define OMAP24XX_DMA_I2C1_TX 27
172 #define OMAP24XX_DMA_I2C1_RX 28
173 #define OMAP24XX_DMA_I2C2_TX 29
174 #define OMAP24XX_DMA_I2C2_RX 30
175 #define OMAP24XX_DMA_MCBSP1_TX 31
176 #define OMAP24XX_DMA_MCBSP1_RX 32
177 #define OMAP24XX_DMA_MCBSP2_TX 33
178 #define OMAP24XX_DMA_MCBSP2_RX 34
179 #define OMAP24XX_DMA_SPI1_TX0 35
180 #define OMAP24XX_DMA_SPI1_RX0 36
181 #define OMAP24XX_DMA_SPI1_TX1 37
182 #define OMAP24XX_DMA_SPI1_RX1 38
183 #define OMAP24XX_DMA_SPI1_TX2 39
184 #define OMAP24XX_DMA_SPI1_RX2 40
185 #define OMAP24XX_DMA_SPI1_TX3 41
186 #define OMAP24XX_DMA_SPI1_RX3 42
187 #define OMAP24XX_DMA_SPI2_TX0 43
188 #define OMAP24XX_DMA_SPI2_RX0 44
189 #define OMAP24XX_DMA_SPI2_TX1 45
190 #define OMAP24XX_DMA_SPI2_RX1 46
191 
192 #define OMAP24XX_DMA_UART1_TX 49
193 #define OMAP24XX_DMA_UART1_RX 50
194 #define OMAP24XX_DMA_UART2_TX 51
195 #define OMAP24XX_DMA_UART2_RX 52
196 #define OMAP24XX_DMA_UART3_TX 53
197 #define OMAP24XX_DMA_UART3_RX 54
198 #define OMAP24XX_DMA_USB_W2FC_TX0 55
199 #define OMAP24XX_DMA_USB_W2FC_RX0 56
200 #define OMAP24XX_DMA_USB_W2FC_TX1 57
201 #define OMAP24XX_DMA_USB_W2FC_RX1 58
202 #define OMAP24XX_DMA_USB_W2FC_TX2 59
203 #define OMAP24XX_DMA_USB_W2FC_RX2 60
204 #define OMAP24XX_DMA_MMC1_TX 61
205 #define OMAP24XX_DMA_MMC1_RX 62
206 #define OMAP24XX_DMA_MS 63
207 #define OMAP24XX_DMA_EXT_DMAREQ5 64
208 
209 #define OMAP1510_DMA_LCD_BASE (0xfffedb00)
210 #define OMAP1510_DMA_LCD_CTRL (OMAP1510_DMA_LCD_BASE + 0x00)
211 #define OMAP1510_DMA_LCD_TOP_F1_L (OMAP1510_DMA_LCD_BASE + 0x02)
212 #define OMAP1510_DMA_LCD_TOP_F1_U (OMAP1510_DMA_LCD_BASE + 0x04)
213 #define OMAP1510_DMA_LCD_BOT_F1_L (OMAP1510_DMA_LCD_BASE + 0x06)
214 #define OMAP1510_DMA_LCD_BOT_F1_U (OMAP1510_DMA_LCD_BASE + 0x08)
215 
216 #define OMAP1610_DMA_LCD_BASE (0xfffee300)
217 #define OMAP1610_DMA_LCD_CSDP (OMAP1610_DMA_LCD_BASE + 0xc0)
218 #define OMAP1610_DMA_LCD_CCR (OMAP1610_DMA_LCD_BASE + 0xc2)
219 #define OMAP1610_DMA_LCD_CTRL (OMAP1610_DMA_LCD_BASE + 0xc4)
220 #define OMAP1610_DMA_LCD_TOP_B1_L (OMAP1610_DMA_LCD_BASE + 0xc8)
221 #define OMAP1610_DMA_LCD_TOP_B1_U (OMAP1610_DMA_LCD_BASE + 0xca)
222 #define OMAP1610_DMA_LCD_BOT_B1_L (OMAP1610_DMA_LCD_BASE + 0xcc)
223 #define OMAP1610_DMA_LCD_BOT_B1_U (OMAP1610_DMA_LCD_BASE + 0xce)
224 #define OMAP1610_DMA_LCD_TOP_B2_L (OMAP1610_DMA_LCD_BASE + 0xd0)
225 #define OMAP1610_DMA_LCD_TOP_B2_U (OMAP1610_DMA_LCD_BASE + 0xd2)
226 #define OMAP1610_DMA_LCD_BOT_B2_L (OMAP1610_DMA_LCD_BASE + 0xd4)
227 #define OMAP1610_DMA_LCD_BOT_B2_U (OMAP1610_DMA_LCD_BASE + 0xd6)
228 #define OMAP1610_DMA_LCD_SRC_EI_B1 (OMAP1610_DMA_LCD_BASE + 0xd8)
229 #define OMAP1610_DMA_LCD_SRC_FI_B1_L (OMAP1610_DMA_LCD_BASE + 0xda)
230 #define OMAP1610_DMA_LCD_SRC_EN_B1 (OMAP1610_DMA_LCD_BASE + 0xe0)
231 #define OMAP1610_DMA_LCD_SRC_FN_B1 (OMAP1610_DMA_LCD_BASE + 0xe4)
232 #define OMAP1610_DMA_LCD_LCH_CTRL (OMAP1610_DMA_LCD_BASE + 0xea)
233 #define OMAP1610_DMA_LCD_SRC_FI_B1_U (OMAP1610_DMA_LCD_BASE + 0xf4)
234 
235 #define OMAP1_DMA_TOUT_IRQ (1 << 0)
236 #define OMAP_DMA_DROP_IRQ (1 << 1)
237 #define OMAP_DMA_HALF_IRQ (1 << 2)
238 #define OMAP_DMA_FRAME_IRQ (1 << 3)
239 #define OMAP_DMA_LAST_IRQ (1 << 4)
240 #define OMAP_DMA_BLOCK_IRQ (1 << 5)
241 #define OMAP1_DMA_SYNC_IRQ (1 << 6)
242 #define OMAP2_DMA_PKT_IRQ (1 << 7)
243 #define OMAP2_DMA_TRANS_ERR_IRQ (1 << 8)
244 #define OMAP2_DMA_SECURE_ERR_IRQ (1 << 9)
245 #define OMAP2_DMA_SUPERVISOR_ERR_IRQ (1 << 10)
246 #define OMAP2_DMA_MISALIGNED_ERR_IRQ (1 << 11)
247 
248 #define OMAP_DMA_DATA_TYPE_S8 0x00
249 #define OMAP_DMA_DATA_TYPE_S16 0x01
250 #define OMAP_DMA_DATA_TYPE_S32 0x02
251 
252 #define OMAP_DMA_SYNC_ELEMENT 0x00
253 #define OMAP_DMA_SYNC_FRAME 0x01
254 #define OMAP_DMA_SYNC_BLOCK 0x02
255 
256 #define OMAP_DMA_PORT_EMIFF 0x00
257 #define OMAP_DMA_PORT_EMIFS 0x01
258 #define OMAP_DMA_PORT_OCP_T1 0x02
259 #define OMAP_DMA_PORT_TIPB 0x03
260 #define OMAP_DMA_PORT_OCP_T2 0x04
261 #define OMAP_DMA_PORT_MPUI 0x05
262 
263 #define OMAP_DMA_AMODE_CONSTANT 0x00
264 #define OMAP_DMA_AMODE_POST_INC 0x01
265 #define OMAP_DMA_AMODE_SINGLE_IDX 0x02
266 #define OMAP_DMA_AMODE_DOUBLE_IDX 0x03
267 
268 enum {
269  OMAP_LCD_DMA_B1_TOP,
270  OMAP_LCD_DMA_B1_BOTTOM,
271  OMAP_LCD_DMA_B2_TOP,
272  OMAP_LCD_DMA_B2_BOTTOM
273 };
274 
275 enum omap_dma_burst_mode {
276  OMAP_DMA_DATA_BURST_DIS = 0,
277  OMAP_DMA_DATA_BURST_4,
278  OMAP_DMA_DATA_BURST_8,
279  OMAP_DMA_DATA_BURST_16,
280 };
281 
282 enum omap_dma_color_mode {
283  OMAP_DMA_COLOR_DIS = 0,
284  OMAP_DMA_CONSTANT_FILL,
285  OMAP_DMA_TRANSPARENT_COPY
286 };
287 
288 enum omap_dma_write_mode {
289  OMAP_DMA_WRITE_NON_POSTED = 0,
290  OMAP_DMA_WRITE_POSTED,
291  OMAP_DMA_WRITE_LAST_NON_POSTED
292 };
293 
294 struct omap_dma_channel_params {
295  int data_type;
296  int elem_count;
297  int frame_count;
298 
299  int src_port;
300  int src_amode;
301  unsigned long src_start;
302  int src_ei;
303  int src_fi;
304 
305  int dst_port;
306  int dst_amode;
307  unsigned long dst_start;
308  int dst_ei;
309  int dst_fi;
310 
311  int trigger;
312  int sync_mode;
313  int src_or_dst_synch;
314 
315  int ie;
316 };
317 
318 #endif
319