OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [atmel-ssc.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
#ifndef __INCLUDE_ATMEL_SSC_H
2
#define __INCLUDE_ATMEL_SSC_H
3
 
4
#include <linux/platform_device.h>
5
#include <linux/list.h>
6
 
7
struct ssc_device {
8
        struct list_head        list;
9
        void __iomem            *regs;
10
        struct platform_device  *pdev;
11
        struct clk              *clk;
12
        int                     user;
13
        int                     irq;
14
};
15
 
16
struct ssc_device * __must_check ssc_request(unsigned int ssc_num);
17
void ssc_free(struct ssc_device *ssc);
18
 
19
/* SSC register offsets */
20
 
21
/* SSC Control Register */
22
#define SSC_CR                          0x00000000
23
#define SSC_CR_RXDIS_SIZE                        1
24
#define SSC_CR_RXDIS_OFFSET                      1
25
#define SSC_CR_RXEN_SIZE                         1
26
#define SSC_CR_RXEN_OFFSET                       0
27
#define SSC_CR_SWRST_SIZE                        1
28
#define SSC_CR_SWRST_OFFSET                     15
29
#define SSC_CR_TXDIS_SIZE                        1
30
#define SSC_CR_TXDIS_OFFSET                      9
31
#define SSC_CR_TXEN_SIZE                         1
32
#define SSC_CR_TXEN_OFFSET                       8
33
 
34
/* SSC Clock Mode Register */
35
#define SSC_CMR                         0x00000004
36
#define SSC_CMR_DIV_SIZE                        12
37
#define SSC_CMR_DIV_OFFSET                       0
38
 
39
/* SSC Receive Clock Mode Register */
40
#define SSC_RCMR                        0x00000010
41
#define SSC_RCMR_CKG_SIZE                        2
42
#define SSC_RCMR_CKG_OFFSET                      6
43
#define SSC_RCMR_CKI_SIZE                        1
44
#define SSC_RCMR_CKI_OFFSET                      5
45
#define SSC_RCMR_CKO_SIZE                        3
46
#define SSC_RCMR_CKO_OFFSET                      2
47
#define SSC_RCMR_CKS_SIZE                        2
48
#define SSC_RCMR_CKS_OFFSET                      0
49
#define SSC_RCMR_PERIOD_SIZE                     8
50
#define SSC_RCMR_PERIOD_OFFSET                  24
51
#define SSC_RCMR_START_SIZE                      4
52
#define SSC_RCMR_START_OFFSET                    8
53
#define SSC_RCMR_STOP_SIZE                       1
54
#define SSC_RCMR_STOP_OFFSET                    12
55
#define SSC_RCMR_STTDLY_SIZE                     8
56
#define SSC_RCMR_STTDLY_OFFSET                  16
57
 
58
/* SSC Receive Frame Mode Register */
59
#define SSC_RFMR                        0x00000014
60
#define SSC_RFMR_DATLEN_SIZE                     5
61
#define SSC_RFMR_DATLEN_OFFSET                   0
62
#define SSC_RFMR_DATNB_SIZE                      4
63
#define SSC_RFMR_DATNB_OFFSET                    8
64
#define SSC_RFMR_FSEDGE_SIZE                     1
65
#define SSC_RFMR_FSEDGE_OFFSET                  24
66
#define SSC_RFMR_FSLEN_SIZE                      4
67
#define SSC_RFMR_FSLEN_OFFSET                   16
68
#define SSC_RFMR_FSOS_SIZE                       4
69
#define SSC_RFMR_FSOS_OFFSET                    20
70
#define SSC_RFMR_LOOP_SIZE                       1
71
#define SSC_RFMR_LOOP_OFFSET                     5
72
#define SSC_RFMR_MSBF_SIZE                       1
73
#define SSC_RFMR_MSBF_OFFSET                     7
74
 
75
/* SSC Transmit Clock Mode Register */
76
#define SSC_TCMR                        0x00000018
77
#define SSC_TCMR_CKG_SIZE                        2
78
#define SSC_TCMR_CKG_OFFSET                      6
79
#define SSC_TCMR_CKI_SIZE                        1
80
#define SSC_TCMR_CKI_OFFSET                      5
81
#define SSC_TCMR_CKO_SIZE                        3
82
#define SSC_TCMR_CKO_OFFSET                      2
83
#define SSC_TCMR_CKS_SIZE                        2
84
#define SSC_TCMR_CKS_OFFSET                      0
85
#define SSC_TCMR_PERIOD_SIZE                     8
86
#define SSC_TCMR_PERIOD_OFFSET                  24
87
#define SSC_TCMR_START_SIZE                      4
88
#define SSC_TCMR_START_OFFSET                    8
89
#define SSC_TCMR_STTDLY_SIZE                     8
90
#define SSC_TCMR_STTDLY_OFFSET                  16
91
 
92
/* SSC Transmit Frame Mode Register */
93
#define SSC_TFMR                        0x0000001c
94
#define SSC_TFMR_DATDEF_SIZE                     1
95
#define SSC_TFMR_DATDEF_OFFSET                   5
96
#define SSC_TFMR_DATLEN_SIZE                     5
97
#define SSC_TFMR_DATLEN_OFFSET                   0
98
#define SSC_TFMR_DATNB_SIZE                      4
99
#define SSC_TFMR_DATNB_OFFSET                    8
100
#define SSC_TFMR_FSDEN_SIZE                      1
101
#define SSC_TFMR_FSDEN_OFFSET                   23
102
#define SSC_TFMR_FSEDGE_SIZE                     1
103
#define SSC_TFMR_FSEDGE_OFFSET                  24
104
#define SSC_TFMR_FSLEN_SIZE                      4
105
#define SSC_TFMR_FSLEN_OFFSET                   16
106
#define SSC_TFMR_FSOS_SIZE                       3
107
#define SSC_TFMR_FSOS_OFFSET                    20
108
#define SSC_TFMR_MSBF_SIZE                       1
109
#define SSC_TFMR_MSBF_OFFSET                     7
110
 
111
/* SSC Receive Hold Register */
112
#define SSC_RHR                         0x00000020
113
#define SSC_RHR_RDAT_SIZE                       32
114
#define SSC_RHR_RDAT_OFFSET                      0
115
 
116
/* SSC Transmit Hold Register */
117
#define SSC_THR                         0x00000024
118
#define SSC_THR_TDAT_SIZE                       32
119
#define SSC_THR_TDAT_OFFSET                      0
120
 
121
/* SSC Receive Sync. Holding Register */
122
#define SSC_RSHR                        0x00000030
123
#define SSC_RSHR_RSDAT_SIZE                     16
124
#define SSC_RSHR_RSDAT_OFFSET                    0
125
 
126
/* SSC Transmit Sync. Holding Register */
127
#define SSC_TSHR                        0x00000034
128
#define SSC_TSHR_TSDAT_SIZE                     16
129
#define SSC_TSHR_RSDAT_OFFSET                    0
130
 
131
/* SSC Receive Compare 0 Register */
132
#define SSC_RC0R                        0x00000038
133
#define SSC_RC0R_CP0_SIZE                       16
134
#define SSC_RC0R_CP0_OFFSET                      0
135
 
136
/* SSC Receive Compare 1 Register */
137
#define SSC_RC1R                        0x0000003c
138
#define SSC_RC1R_CP1_SIZE                       16
139
#define SSC_RC1R_CP1_OFFSET                      0
140
 
141
/* SSC Status Register */
142
#define SSC_SR                          0x00000040
143
#define SSC_SR_CP0_SIZE                          1
144
#define SSC_SR_CP0_OFFSET                        8
145
#define SSC_SR_CP1_SIZE                          1
146
#define SSC_SR_CP1_OFFSET                        9
147
#define SSC_SR_ENDRX_SIZE                        1
148
#define SSC_SR_ENDRX_OFFSET                      6
149
#define SSC_SR_ENDTX_SIZE                        1
150
#define SSC_SR_ENDTX_OFFSET                      2
151
#define SSC_SR_OVRUN_SIZE                        1
152
#define SSC_SR_OVRUN_OFFSET                      5
153
#define SSC_SR_RXBUFF_SIZE                       1
154
#define SSC_SR_RXBUFF_OFFSET                     7
155
#define SSC_SR_RXEN_SIZE                         1
156
#define SSC_SR_RXEN_OFFSET                      17
157
#define SSC_SR_RXRDY_SIZE                        1
158
#define SSC_SR_RXRDY_OFFSET                      4
159
#define SSC_SR_RXSYN_SIZE                        1
160
#define SSC_SR_RXSYN_OFFSET                     11
161
#define SSC_SR_TXBUFE_SIZE                       1
162
#define SSC_SR_TXBUFE_OFFSET                     3
163
#define SSC_SR_TXEMPTY_SIZE                      1
164
#define SSC_SR_TXEMPTY_OFFSET                    1
165
#define SSC_SR_TXEN_SIZE                         1
166
#define SSC_SR_TXEN_OFFSET                      16
167
#define SSC_SR_TXRDY_SIZE                        1
168
#define SSC_SR_TXRDY_OFFSET                      0
169
#define SSC_SR_TXSYN_SIZE                        1
170
#define SSC_SR_TXSYN_OFFSET                     10
171
 
172
/* SSC Interrupt Enable Register */
173
#define SSC_IER                         0x00000044
174
#define SSC_IER_CP0_SIZE                         1
175
#define SSC_IER_CP0_OFFSET                       8
176
#define SSC_IER_CP1_SIZE                         1
177
#define SSC_IER_CP1_OFFSET                       9
178
#define SSC_IER_ENDRX_SIZE                       1
179
#define SSC_IER_ENDRX_OFFSET                     6
180
#define SSC_IER_ENDTX_SIZE                       1
181
#define SSC_IER_ENDTX_OFFSET                     2
182
#define SSC_IER_OVRUN_SIZE                       1
183
#define SSC_IER_OVRUN_OFFSET                     5
184
#define SSC_IER_RXBUFF_SIZE                      1
185
#define SSC_IER_RXBUFF_OFFSET                    7
186
#define SSC_IER_RXRDY_SIZE                       1
187
#define SSC_IER_RXRDY_OFFSET                     4
188
#define SSC_IER_RXSYN_SIZE                       1
189
#define SSC_IER_RXSYN_OFFSET                    11
190
#define SSC_IER_TXBUFE_SIZE                      1
191
#define SSC_IER_TXBUFE_OFFSET                    3
192
#define SSC_IER_TXEMPTY_SIZE                     1
193
#define SSC_IER_TXEMPTY_OFFSET                   1
194
#define SSC_IER_TXRDY_SIZE                       1
195
#define SSC_IER_TXRDY_OFFSET                     0
196
#define SSC_IER_TXSYN_SIZE                       1
197
#define SSC_IER_TXSYN_OFFSET                    10
198
 
199
/* SSC Interrupt Disable Register */
200
#define SSC_IDR                         0x00000048
201
#define SSC_IDR_CP0_SIZE                         1
202
#define SSC_IDR_CP0_OFFSET                       8
203
#define SSC_IDR_CP1_SIZE                         1
204
#define SSC_IDR_CP1_OFFSET                       9
205
#define SSC_IDR_ENDRX_SIZE                       1
206
#define SSC_IDR_ENDRX_OFFSET                     6
207
#define SSC_IDR_ENDTX_SIZE                       1
208
#define SSC_IDR_ENDTX_OFFSET                     2
209
#define SSC_IDR_OVRUN_SIZE                       1
210
#define SSC_IDR_OVRUN_OFFSET                     5
211
#define SSC_IDR_RXBUFF_SIZE                      1
212
#define SSC_IDR_RXBUFF_OFFSET                    7
213
#define SSC_IDR_RXRDY_SIZE                       1
214
#define SSC_IDR_RXRDY_OFFSET                     4
215
#define SSC_IDR_RXSYN_SIZE                       1
216
#define SSC_IDR_RXSYN_OFFSET                    11
217
#define SSC_IDR_TXBUFE_SIZE                      1
218
#define SSC_IDR_TXBUFE_OFFSET                    3
219
#define SSC_IDR_TXEMPTY_SIZE                     1
220
#define SSC_IDR_TXEMPTY_OFFSET                   1
221
#define SSC_IDR_TXRDY_SIZE                       1
222
#define SSC_IDR_TXRDY_OFFSET                     0
223
#define SSC_IDR_TXSYN_SIZE                       1
224
#define SSC_IDR_TXSYN_OFFSET                    10
225
 
226
/* SSC Interrupt Mask Register */
227
#define SSC_IMR                         0x0000004c
228
#define SSC_IMR_CP0_SIZE                         1
229
#define SSC_IMR_CP0_OFFSET                       8
230
#define SSC_IMR_CP1_SIZE                         1
231
#define SSC_IMR_CP1_OFFSET                       9
232
#define SSC_IMR_ENDRX_SIZE                       1
233
#define SSC_IMR_ENDRX_OFFSET                     6
234
#define SSC_IMR_ENDTX_SIZE                       1
235
#define SSC_IMR_ENDTX_OFFSET                     2
236
#define SSC_IMR_OVRUN_SIZE                       1
237
#define SSC_IMR_OVRUN_OFFSET                     5
238
#define SSC_IMR_RXBUFF_SIZE                      1
239
#define SSC_IMR_RXBUFF_OFFSET                    7
240
#define SSC_IMR_RXRDY_SIZE                       1
241
#define SSC_IMR_RXRDY_OFFSET                     4
242
#define SSC_IMR_RXSYN_SIZE                       1
243
#define SSC_IMR_RXSYN_OFFSET                    11
244
#define SSC_IMR_TXBUFE_SIZE                      1
245
#define SSC_IMR_TXBUFE_OFFSET                    3
246
#define SSC_IMR_TXEMPTY_SIZE                     1
247
#define SSC_IMR_TXEMPTY_OFFSET                   1
248
#define SSC_IMR_TXRDY_SIZE                       1
249
#define SSC_IMR_TXRDY_OFFSET                     0
250
#define SSC_IMR_TXSYN_SIZE                       1
251
#define SSC_IMR_TXSYN_OFFSET                    10
252
 
253
/* SSC PDC Receive Pointer Register */
254
#define SSC_PDC_RPR                     0x00000100
255
 
256
/* SSC PDC Receive Counter Register */
257
#define SSC_PDC_RCR                     0x00000104
258
 
259
/* SSC PDC Transmit Pointer Register */
260
#define SSC_PDC_TPR                     0x00000108
261
 
262
/* SSC PDC Receive Next Pointer Register */
263
#define SSC_PDC_RNPR                    0x00000110
264
 
265
/* SSC PDC Receive Next Counter Register */
266
#define SSC_PDC_RNCR                    0x00000114
267
 
268
/* SSC PDC Transmit Counter Register */
269
#define SSC_PDC_TCR                     0x0000010c
270
 
271
/* SSC PDC Transmit Next Pointer Register */
272
#define SSC_PDC_TNPR                    0x00000118
273
 
274
/* SSC PDC Transmit Next Counter Register */
275
#define SSC_PDC_TNCR                    0x0000011c
276
 
277
/* SSC PDC Transfer Control Register */
278
#define SSC_PDC_PTCR                    0x00000120
279
#define SSC_PDC_PTCR_RXTDIS_SIZE                 1
280
#define SSC_PDC_PTCR_RXTDIS_OFFSET               1
281
#define SSC_PDC_PTCR_RXTEN_SIZE                  1
282
#define SSC_PDC_PTCR_RXTEN_OFFSET                0
283
#define SSC_PDC_PTCR_TXTDIS_SIZE                 1
284
#define SSC_PDC_PTCR_TXTDIS_OFFSET               9
285
#define SSC_PDC_PTCR_TXTEN_SIZE                  1
286
#define SSC_PDC_PTCR_TXTEN_OFFSET                8
287
 
288
/* SSC PDC Transfer Status Register */
289
#define SSC_PDC_PTSR                    0x00000124
290
#define SSC_PDC_PTSR_RXTEN_SIZE                  1
291
#define SSC_PDC_PTSR_RXTEN_OFFSET                0
292
#define SSC_PDC_PTSR_TXTEN_SIZE                  1
293
#define SSC_PDC_PTSR_TXTEN_OFFSET                8
294
 
295
/* Bit manipulation macros */
296
#define SSC_BIT(name)                                   \
297
        (1 << SSC_##name##_OFFSET)
298
#define SSC_BF(name, value)                             \
299
        (((value) & ((1 << SSC_##name##_SIZE) - 1))     \
300
         << SSC_##name##_OFFSET)
301
#define SSC_BFEXT(name, value)                          \
302
        (((value) >> SSC_##name##_OFFSET)               \
303
         & ((1 << SSC_##name##_SIZE) - 1))
304
#define SSC_BFINS(name, value, old)                     \
305
        (((old) & ~(((1 << SSC_##name##_SIZE) - 1)      \
306
        << SSC_##name##_OFFSET)) | SSC_BF(name, value))
307
 
308
/* Register access macros */
309
#define ssc_readl(base, reg)            __raw_readl(base + SSC_##reg)
310
#define ssc_writel(base, reg, value)    __raw_writel((value), base + SSC_##reg)
311
 
312
#endif /* __INCLUDE_ATMEL_SSC_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.