Merge tag 'fbdev-v5.1' of git://github.com/bzolnier/linux
[linux-2.6-microblaze.git] / sound / soc / ti / davinci-mcasp.h
1 /*
2  * ALSA SoC McASP Audio Layer for TI DAVINCI processor
3  *
4  * MCASP related definitions
5  *
6  * Author: Nirmal Pandey <n-pandey@ti.com>,
7  *         Suresh Rajashekara <suresh.r@ti.com>
8  *         Steve Chen <schen@.mvista.com>
9  *
10  * Copyright:   (C) 2009 MontaVista Software, Inc., <source@mvista.com>
11  * Copyright:   (C) 2009  Texas Instruments, India
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License version 2 as
15  * published by the Free Software Foundation.
16  */
17
18 #ifndef DAVINCI_MCASP_H
19 #define DAVINCI_MCASP_H
20
21 /*
22  * McASP register definitions
23  */
24 #define DAVINCI_MCASP_PID_REG           0x00
25 #define DAVINCI_MCASP_PWREMUMGT_REG     0x04
26
27 #define DAVINCI_MCASP_PFUNC_REG         0x10
28 #define DAVINCI_MCASP_PDIR_REG          0x14
29 #define DAVINCI_MCASP_PDOUT_REG         0x18
30 #define DAVINCI_MCASP_PDSET_REG         0x1c
31
32 #define DAVINCI_MCASP_PDCLR_REG         0x20
33
34 #define DAVINCI_MCASP_TLGC_REG          0x30
35 #define DAVINCI_MCASP_TLMR_REG          0x34
36
37 #define DAVINCI_MCASP_GBLCTL_REG        0x44
38 #define DAVINCI_MCASP_AMUTE_REG         0x48
39 #define DAVINCI_MCASP_LBCTL_REG         0x4c
40
41 #define DAVINCI_MCASP_TXDITCTL_REG      0x50
42
43 #define DAVINCI_MCASP_GBLCTLR_REG       0x60
44 #define DAVINCI_MCASP_RXMASK_REG        0x64
45 #define DAVINCI_MCASP_RXFMT_REG         0x68
46 #define DAVINCI_MCASP_RXFMCTL_REG       0x6c
47
48 #define DAVINCI_MCASP_ACLKRCTL_REG      0x70
49 #define DAVINCI_MCASP_AHCLKRCTL_REG     0x74
50 #define DAVINCI_MCASP_RXTDM_REG         0x78
51 #define DAVINCI_MCASP_EVTCTLR_REG       0x7c
52
53 #define DAVINCI_MCASP_RXSTAT_REG        0x80
54 #define DAVINCI_MCASP_RXTDMSLOT_REG     0x84
55 #define DAVINCI_MCASP_RXCLKCHK_REG      0x88
56 #define DAVINCI_MCASP_REVTCTL_REG       0x8c
57
58 #define DAVINCI_MCASP_GBLCTLX_REG       0xa0
59 #define DAVINCI_MCASP_TXMASK_REG        0xa4
60 #define DAVINCI_MCASP_TXFMT_REG         0xa8
61 #define DAVINCI_MCASP_TXFMCTL_REG       0xac
62
63 #define DAVINCI_MCASP_ACLKXCTL_REG      0xb0
64 #define DAVINCI_MCASP_AHCLKXCTL_REG     0xb4
65 #define DAVINCI_MCASP_TXTDM_REG         0xb8
66 #define DAVINCI_MCASP_EVTCTLX_REG       0xbc
67
68 #define DAVINCI_MCASP_TXSTAT_REG        0xc0
69 #define DAVINCI_MCASP_TXTDMSLOT_REG     0xc4
70 #define DAVINCI_MCASP_TXCLKCHK_REG      0xc8
71 #define DAVINCI_MCASP_XEVTCTL_REG       0xcc
72
73 /* Left(even TDM Slot) Channel Status Register File */
74 #define DAVINCI_MCASP_DITCSRA_REG       0x100
75 /* Right(odd TDM slot) Channel Status Register File */
76 #define DAVINCI_MCASP_DITCSRB_REG       0x118
77 /* Left(even TDM slot) User Data Register File */
78 #define DAVINCI_MCASP_DITUDRA_REG       0x130
79 /* Right(odd TDM Slot) User Data Register File */
80 #define DAVINCI_MCASP_DITUDRB_REG       0x148
81
82 /* Serializer n Control Register */
83 #define DAVINCI_MCASP_XRSRCTL_BASE_REG  0x180
84 #define DAVINCI_MCASP_XRSRCTL_REG(n)    (DAVINCI_MCASP_XRSRCTL_BASE_REG + \
85                                                 (n << 2))
86
87 /* Transmit Buffer for Serializer n */
88 #define DAVINCI_MCASP_TXBUF_REG(n)      (0x200 + (n << 2))
89 /* Receive Buffer for Serializer n */
90 #define DAVINCI_MCASP_RXBUF_REG(n)      (0x280 + (n << 2))
91
92 /* McASP FIFO Registers */
93 #define DAVINCI_MCASP_V2_AFIFO_BASE     (0x1010)
94 #define DAVINCI_MCASP_V3_AFIFO_BASE     (0x1000)
95
96 /* FIFO register offsets from AFIFO base */
97 #define MCASP_WFIFOCTL_OFFSET           (0x0)
98 #define MCASP_WFIFOSTS_OFFSET           (0x4)
99 #define MCASP_RFIFOCTL_OFFSET           (0x8)
100 #define MCASP_RFIFOSTS_OFFSET           (0xc)
101
102 /*
103  * DAVINCI_MCASP_PWREMUMGT_REG - Power Down and Emulation Management
104  *     Register Bits
105  */
106 #define MCASP_FREE      BIT(0)
107 #define MCASP_SOFT      BIT(1)
108
109 /*
110  * DAVINCI_MCASP_PFUNC_REG - Pin Function / GPIO Enable Register Bits
111  * DAVINCI_MCASP_PDIR_REG - Pin Direction Register Bits
112  * DAVINCI_MCASP_PDOUT_REG - Pin output in GPIO mode
113  * DAVINCI_MCASP_PDSET_REG - Pin input in GPIO mode
114  */
115 #define PIN_BIT_AXR(n)  (n)
116 #define PIN_BIT_AMUTE   25
117 #define PIN_BIT_ACLKX   26
118 #define PIN_BIT_AHCLKX  27
119 #define PIN_BIT_AFSX    28
120 #define PIN_BIT_ACLKR   29
121 #define PIN_BIT_AHCLKR  30
122 #define PIN_BIT_AFSR    31
123
124 /*
125  * DAVINCI_MCASP_TXDITCTL_REG - Transmit DIT Control Register Bits
126  */
127 #define DITEN   BIT(0)  /* Transmit DIT mode enable/disable */
128 #define VA      BIT(2)
129 #define VB      BIT(3)
130
131 /*
132  * DAVINCI_MCASP_TXFMT_REG - Transmit Bitstream Format Register Bits
133  */
134 #define TXROT(val)      (val)
135 #define TXSEL           BIT(3)
136 #define TXSSZ(val)      (val<<4)
137 #define TXPBIT(val)     (val<<8)
138 #define TXPAD(val)      (val<<13)
139 #define TXORD           BIT(15)
140 #define FSXDLY(val)     (val<<16)
141
142 /*
143  * DAVINCI_MCASP_RXFMT_REG - Receive Bitstream Format Register Bits
144  */
145 #define RXROT(val)      (val)
146 #define RXSEL           BIT(3)
147 #define RXSSZ(val)      (val<<4)
148 #define RXPBIT(val)     (val<<8)
149 #define RXPAD(val)      (val<<13)
150 #define RXORD           BIT(15)
151 #define FSRDLY(val)     (val<<16)
152
153 /*
154  * DAVINCI_MCASP_TXFMCTL_REG -  Transmit Frame Control Register Bits
155  */
156 #define FSXPOL          BIT(0)
157 #define AFSXE           BIT(1)
158 #define FSXDUR          BIT(4)
159 #define FSXMOD(val)     (val<<7)
160
161 /*
162  * DAVINCI_MCASP_RXFMCTL_REG - Receive Frame Control Register Bits
163  */
164 #define FSRPOL          BIT(0)
165 #define AFSRE           BIT(1)
166 #define FSRDUR          BIT(4)
167 #define FSRMOD(val)     (val<<7)
168
169 /*
170  * DAVINCI_MCASP_ACLKXCTL_REG - Transmit Clock Control Register Bits
171  */
172 #define ACLKXDIV(val)   (val)
173 #define ACLKXE          BIT(5)
174 #define TX_ASYNC        BIT(6)
175 #define ACLKXPOL        BIT(7)
176 #define ACLKXDIV_MASK   0x1f
177
178 /*
179  * DAVINCI_MCASP_ACLKRCTL_REG Receive Clock Control Register Bits
180  */
181 #define ACLKRDIV(val)   (val)
182 #define ACLKRE          BIT(5)
183 #define RX_ASYNC        BIT(6)
184 #define ACLKRPOL        BIT(7)
185 #define ACLKRDIV_MASK   0x1f
186
187 /*
188  * DAVINCI_MCASP_AHCLKXCTL_REG - High Frequency Transmit Clock Control
189  *     Register Bits
190  */
191 #define AHCLKXDIV(val)  (val)
192 #define AHCLKXPOL       BIT(14)
193 #define AHCLKXE         BIT(15)
194 #define AHCLKXDIV_MASK  0xfff
195
196 /*
197  * DAVINCI_MCASP_AHCLKRCTL_REG - High Frequency Receive Clock Control
198  *     Register Bits
199  */
200 #define AHCLKRDIV(val)  (val)
201 #define AHCLKRPOL       BIT(14)
202 #define AHCLKRE         BIT(15)
203 #define AHCLKRDIV_MASK  0xfff
204
205 /*
206  * DAVINCI_MCASP_XRSRCTL_BASE_REG -  Serializer Control Register Bits
207  */
208 #define MODE(val)       (val)
209 #define DISMOD_3STATE   (0x0)
210 #define DISMOD_LOW      (0x2 << 2)
211 #define DISMOD_HIGH     (0x3 << 2)
212 #define DISMOD_VAL(x)   ((x) << 2)
213 #define DISMOD_MASK     DISMOD_HIGH
214 #define TXSTATE         BIT(4)
215 #define RXSTATE         BIT(5)
216 #define SRMOD_MASK      3
217 #define SRMOD_INACTIVE  0
218
219 /*
220  * DAVINCI_MCASP_LBCTL_REG - Loop Back Control Register Bits
221  */
222 #define LBEN            BIT(0)
223 #define LBORD           BIT(1)
224 #define LBGENMODE(val)  (val<<2)
225
226 /*
227  * DAVINCI_MCASP_TXTDMSLOT_REG - Transmit TDM Slot Register configuration
228  */
229 #define TXTDMS(n)       (1<<n)
230
231 /*
232  * DAVINCI_MCASP_RXTDMSLOT_REG - Receive TDM Slot Register configuration
233  */
234 #define RXTDMS(n)       (1<<n)
235
236 /*
237  * DAVINCI_MCASP_GBLCTL_REG -  Global Control Register Bits
238  */
239 #define RXCLKRST        BIT(0)  /* Receiver Clock Divider Reset */
240 #define RXHCLKRST       BIT(1)  /* Receiver High Frequency Clock Divider */
241 #define RXSERCLR        BIT(2)  /* Receiver Serializer Clear */
242 #define RXSMRST         BIT(3)  /* Receiver State Machine Reset */
243 #define RXFSRST         BIT(4)  /* Frame Sync Generator Reset */
244 #define TXCLKRST        BIT(8)  /* Transmitter Clock Divider Reset */
245 #define TXHCLKRST       BIT(9)  /* Transmitter High Frequency Clock Divider*/
246 #define TXSERCLR        BIT(10) /* Transmit Serializer Clear */
247 #define TXSMRST         BIT(11) /* Transmitter State Machine Reset */
248 #define TXFSRST         BIT(12) /* Frame Sync Generator Reset */
249
250 /*
251  * DAVINCI_MCASP_TXSTAT_REG - Transmitter Status Register Bits
252  * DAVINCI_MCASP_RXSTAT_REG - Receiver Status Register Bits
253  */
254 #define XRERR           BIT(8) /* Transmit/Receive error */
255 #define XRDATA          BIT(5) /* Transmit/Receive data ready */
256
257 /*
258  * DAVINCI_MCASP_AMUTE_REG -  Mute Control Register Bits
259  */
260 #define MUTENA(val)     (val)
261 #define MUTEINPOL       BIT(2)
262 #define MUTEINENA       BIT(3)
263 #define MUTEIN          BIT(4)
264 #define MUTER           BIT(5)
265 #define MUTEX           BIT(6)
266 #define MUTEFSR         BIT(7)
267 #define MUTEFSX         BIT(8)
268 #define MUTEBADCLKR     BIT(9)
269 #define MUTEBADCLKX     BIT(10)
270 #define MUTERXDMAERR    BIT(11)
271 #define MUTETXDMAERR    BIT(12)
272
273 /*
274  * DAVINCI_MCASP_REVTCTL_REG - Receiver DMA Event Control Register bits
275  */
276 #define RXDATADMADIS    BIT(0)
277
278 /*
279  * DAVINCI_MCASP_XEVTCTL_REG - Transmitter DMA Event Control Register bits
280  */
281 #define TXDATADMADIS    BIT(0)
282
283 /*
284  * DAVINCI_MCASP_EVTCTLR_REG - Receiver Interrupt Control Register Bits
285  */
286 #define ROVRN           BIT(0)
287
288 /*
289  * DAVINCI_MCASP_EVTCTLX_REG - Transmitter Interrupt Control Register Bits
290  */
291 #define XUNDRN          BIT(0)
292
293 /*
294  * DAVINCI_MCASP_W[R]FIFOCTL - Write/Read FIFO Control Register bits
295  */
296 #define FIFO_ENABLE     BIT(16)
297 #define NUMEVT_MASK     (0xFF << 8)
298 #define NUMEVT(x)       (((x) & 0xFF) << 8)
299 #define NUMDMA_MASK     (0xFF)
300
301 /* clock divider IDs */
302 #define MCASP_CLKDIV_AUXCLK             0 /* HCLK divider from AUXCLK */
303 #define MCASP_CLKDIV_BCLK               1 /* BCLK divider from HCLK */
304 #define MCASP_CLKDIV_BCLK_FS_RATIO      2 /* to set BCLK FS ration */
305
306 #endif  /* DAVINCI_MCASP_H */