Root/target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/svip/ssc_reg.h

1/******************************************************************************
2
3  Copyright (c) 2007
4  Infineon Technologies AG
5  St. Martin Strasse 53; 81669 Munich, Germany
6
7  Any use of this Software is subject to the conclusion of a respective
8  License Agreement. Without such a License Agreement no rights to the
9  Software are granted.
10
11 ******************************************************************************/
12
13#ifndef __SSC_REG_H
14#define __SSC_REG_H
15
16/** SSC register structure */
17struct svip_reg_ssc {
18    volatile unsigned long clc; /* 0x00 */
19    volatile unsigned long pisel; /* 0x04 */
20    volatile unsigned long id; /* 0x08 */
21    volatile unsigned long reserved0; /* 0x0c */
22    volatile unsigned long mcon; /* 0x10 */
23    volatile unsigned long state; /* 0x14 */
24    volatile unsigned long whbstate; /* 0x18 */
25    volatile unsigned long reserved1; /* 0x1c */
26    volatile unsigned long tb; /* 0x20 */
27    volatile unsigned long rb; /* 0x24 */
28    volatile unsigned long reserved2[2]; /* 0x28 */
29    volatile unsigned long rxfcon; /* 0x30 */
30    volatile unsigned long txfcon; /* 0x34 */
31    volatile unsigned long fstat; /* 0x38 */
32    volatile unsigned long reserved3; /* 0x3c */
33    volatile unsigned long br; /* 0x40 */
34    volatile unsigned long brstat; /* 0x44 */
35    volatile unsigned long reserved4[6]; /* 0x48 */
36    volatile unsigned long sfcon; /* 0x60 */
37    volatile unsigned long sfstat; /* 0x64 */
38    volatile unsigned long reserved5[2]; /* 0x68 */
39    volatile unsigned long gpocon; /* 0x70 */
40    volatile unsigned long gpostat; /* 0x74 */
41    volatile unsigned long whbgpostat; /* 0x78 */
42    volatile unsigned long reserved6; /* 0x7c */
43    volatile unsigned long rxreq; /* 0x80 */
44    volatile unsigned long rxcnt; /* 0x84 */
45    volatile unsigned long reserved7[25]; /* 0x88 */
46    volatile unsigned long dma_con; /* 0xEC */
47    volatile unsigned long reserved8; /* 0xf0 */
48    volatile unsigned long irnen; /* 0xF4 */
49    volatile unsigned long irncr; /* 0xF8 */
50    volatile unsigned long irnicr; /* 0xFC */
51};
52
53/*******************************************************************************
54 * CLC Register
55 ******************************************************************************/
56
57/* Clock Divider for Sleep Mode (23:16) */
58#define SSC_CLC_SMC (0xff << 16)
59#define SSC_CLC_SMC_VAL(val) (((val) & 0xff) << 16)
60#define SSC_CLC_SMC_GET(val) ((((val) & SSC_CLC_SMC) >> 16) & 0xff)
61#define SSC_CLC_SMC_SET(reg,val) (reg) = ((reg & ~SSC_CLC_SMC) | (((val) & 0xff) << 16))
62/* Clock Divider for Normal Run Mode (15:8) */
63#define SSC_CLC_RMC (0xff << 8)
64#define SSC_CLC_RMC_VAL(val) (((val) & 0xff) << 8)
65#define SSC_CLC_RMC_GET(val) ((((val) & SSC_CLC_RMC) >> 8) & 0xff)
66#define SSC_CLC_RMC_SET(reg,val) (reg) = ((reg & ~SSC_CLC_RMC) | (((val) & 0xff) << 8))
67/* Fast Shut-Off Enable Bit (5) */
68#define SSC_CLC_FSOE (0x1 << 5)
69#define SSC_CLC_FSOE_VAL(val) (((val) & 0x1) << 5)
70#define SSC_CLC_FSOE_GET(val) ((((val) & SSC_CLC_FSOE) >> 5) & 0x1)
71#define SSC_CLC_FSOE_SET(reg,val) (reg) = ((reg & ~SSC_CLC_FSOE) | (((val) & 0x1) << 5))
72/* Suspend Bit Write Enable for OCDS (4) */
73#define SSC_CLC_SBWE (0x1 << 4)
74#define SSC_CLC_SBWE_VAL(val) (((val) & 0x1) << 4)
75#define SSC_CLC_SBWE_SET(reg,val) (reg) = (((reg & ~SSC_CLC_SBWE) | (val) & 1) << 4)
76/* External Request Disable (3) */
77#define SSC_CLC_EDIS (0x1 << 3)
78#define SSC_CLC_EDIS_VAL(val) (((val) & 0x1) << 3)
79#define SSC_CLC_EDIS_GET(val) ((((val) & SSC_CLC_EDIS) >> 3) & 0x1)
80#define SSC_CLC_EDIS_SET(reg,val) (reg) = ((reg & ~SSC_CLC_EDIS) | (((val) & 0x1) << 3))
81/* Suspend Enable Bit for OCDS (2) */
82#define SSC_CLC_SPEN (0x1 << 2)
83#define SSC_CLC_SPEN_VAL(val) (((val) & 0x1) << 2)
84#define SSC_CLC_SPEN_GET(val) ((((val) & SSC_CLC_SPEN) >> 2) & 0x1)
85#define SSC_CLC_SPEN_SET(reg,val) (reg) = ((reg & ~SSC_CLC_SPEN) | (((val) & 0x1) << 2))
86/* Disable Status Bit (1) */
87#define SSC_CLC_DISS (0x1 << 1)
88#define SSC_CLC_DISS_GET(val) ((((val) & SSC_CLC_DISS) >> 1) & 0x1)
89/* Disable Request Bit (0) */
90#define SSC_CLC_DISR (0x1)
91#define SSC_CLC_DISR_VAL(val) (((val) & 0x1) << 0)
92#define SSC_CLC_DISR_GET(val) ((((val) & SSC_CLC_DISR) >> 0) & 0x1)
93#define SSC_CLC_DISR_SET(reg,val) (reg) = ((reg & ~SSC_CLC_DISR) | (((val) & 0x1) << 0))
94
95/*******************************************************************************
96 * ID Register
97 ******************************************************************************/
98
99/* Transmit FIFO Size (29:24) */
100#define SSC_ID_TXFS (0x3f << 24)
101#define SSC_ID_TXFS_GET(val) ((((val) & SSC_ID_TXFS) >> 24) & 0x3f)
102/* Receive FIFO Size (21:16) */
103#define SSC_ID_RXFS (0x3f << 16)
104#define SSC_ID_RXFS_GET(val) ((((val) & SSC_ID_RXFS) >> 16) & 0x3f)
105/* Module ID (15:8) */
106#define SSC_ID_ID (0xff << 8)
107#define SSC_ID_ID_GET(val) ((((val) & SSC_ID_ID) >> 8) & 0xff)
108/* Configuration (5) */
109#define SSC_ID_CFG (0x1 << 5)
110#define SSC_ID_CFG_GET(val) ((((val) & SSC_ID_CFG) >> 5) & 0x1)
111/* Revision (4:0) */
112#define SSC_ID_REV (0x1f)
113#define SSC_ID_REV_GET(val) ((((val) & SSC_ID_REV) >> 0) & 0x1f)
114
115/*******************************************************************************
116 * MCON Register
117 ******************************************************************************/
118
119/* Echo Mode (24) */
120#define SSC_MCON_EM (0x1 << 24)
121#define SSC_MCON_EM_VAL(val) (((val) & 0x1) << 24)
122#define SSC_MCON_EM_GET(val) ((((val) & SSC_MCON_EM) >> 24) & 0x1)
123#define SSC_MCON_EM_SET(reg,val) (reg) = ((reg & ~SSC_MCON_EM) | (((val) & 0x1) << 24))
124/* Idle Bit Value (23) */
125#define SSC_MCON_IDLE (0x1 << 23)
126#define SSC_MCON_IDLE_VAL(val) (((val) & 0x1) << 23)
127#define SSC_MCON_IDLE_GET(val) ((((val) & SSC_MCON_IDLE) >> 23) & 0x1)
128#define SSC_MCON_IDLE_SET(reg,val) (reg) = ((reg & ~SSC_MCON_IDLE) | (((val) & 0x1) << 23))
129/* Enable Byte Valid Control (22) */
130#define SSC_MCON_ENBV (0x1 << 22)
131#define SSC_MCON_ENBV_VAL(val) (((val) & 0x1) << 22)
132#define SSC_MCON_ENBV_GET(val) ((((val) & SSC_MCON_ENBV) >> 22) & 0x1)
133#define SSC_MCON_ENBV_SET(reg,val) (reg) = ((reg & ~SSC_MCON_ENBV) | (((val) & 0x1) << 22))
134/* Data Width Selection (20:16) */
135#define SSC_MCON_BM (0x1f << 16)
136#define SSC_MCON_BM_VAL(val) (((val) & 0x1f) << 16)
137#define SSC_MCON_BM_GET(val) ((((val) & SSC_MCON_BM) >> 16) & 0x1f)
138#define SSC_MCON_BM_SET(reg,val) (reg) = ((reg & ~SSC_MCON_BM) | (((val) & 0x1f) << 16))
139/* Receive Underflow Error Enable (12) */
140#define SSC_MCON_RUEN (0x1 << 12)
141#define SSC_MCON_RUEN_VAL(val) (((val) & 0x1) << 12)
142#define SSC_MCON_RUEN_GET(val) ((((val) & SSC_MCON_RUEN) >> 12) & 0x1)
143#define SSC_MCON_RUEN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_RUEN) | (((val) & 0x1) << 12))
144/* Transmit Underflow Error Enable (11) */
145#define SSC_MCON_TUEN (0x1 << 11)
146#define SSC_MCON_TUEN_VAL(val) (((val) & 0x1) << 11)
147#define SSC_MCON_TUEN_GET(val) ((((val) & SSC_MCON_TUEN) >> 11) & 0x1)
148#define SSC_MCON_TUEN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_TUEN) | (((val) & 0x1) << 11))
149/* Abort Error Enable (10) */
150#define SSC_MCON_AEN (0x1 << 10)
151#define SSC_MCON_AEN_VAL(val) (((val) & 0x1) << 10)
152#define SSC_MCON_AEN_GET(val) ((((val) & SSC_MCON_AEN) >> 10) & 0x1)
153#define SSC_MCON_AEN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_AEN) | (((val) & 0x1) << 10))
154/* Receive Overflow Error Enable (9) */
155#define SSC_MCON_REN (0x1 << 9)
156#define SSC_MCON_REN_VAL(val) (((val) & 0x1) << 9)
157#define SSC_MCON_REN_GET(val) ((((val) & SSC_MCON_REN) >> 9) & 0x1)
158#define SSC_MCON_REN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_REN) | (((val) & 0x1) << 9))
159/* Transmit Overflow Error Enable (8) */
160#define SSC_MCON_TEN (0x1 << 8)
161#define SSC_MCON_TEN_VAL(val) (((val) & 0x1) << 8)
162#define SSC_MCON_TEN_GET(val) ((((val) & SSC_MCON_TEN) >> 8) & 0x1)
163#define SSC_MCON_TEN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_TEN) | (((val) & 0x1) << 8))
164/* Loop Back Control (7) */
165#define SSC_MCON_LB (0x1 << 7)
166#define SSC_MCON_LB_VAL(val) (((val) & 0x1) << 7)
167#define SSC_MCON_LB_GET(val) ((((val) & SSC_MCON_LB) >> 7) & 0x1)
168#define SSC_MCON_LB_SET(reg,val) (reg) = ((reg & ~SSC_MCON_LB) | (((val) & 0x1) << 7))
169/* Clock Polarity Control (6) */
170#define SSC_MCON_PO (0x1 << 6)
171#define SSC_MCON_PO_VAL(val) (((val) & 0x1) << 6)
172#define SSC_MCON_PO_GET(val) ((((val) & SSC_MCON_PO) >> 6) & 0x1)
173#define SSC_MCON_PO_SET(reg,val) (reg) = ((reg & ~SSC_MCON_PO) | (((val) & 0x1) << 6))
174/* Clock Phase Control (5) */
175#define SSC_MCON_PH (0x1 << 5)
176#define SSC_MCON_PH_VAL(val) (((val) & 0x1) << 5)
177#define SSC_MCON_PH_GET(val) ((((val) & SSC_MCON_PH) >> 5) & 0x1)
178#define SSC_MCON_PH_SET(reg,val) (reg) = ((reg & ~SSC_MCON_PH) | (((val) & 0x1) << 5))
179/* Heading Control (4) */
180#define SSC_MCON_HB (0x1 << 4)
181#define SSC_MCON_HB_VAL(val) (((val) & 0x1) << 4)
182#define SSC_MCON_HB_GET(val) ((((val) & SSC_MCON_HB) >> 4) & 0x1)
183#define SSC_MCON_HB_SET(reg,val) (reg) = ((reg & ~SSC_MCON_HB) | (((val) & 0x1) << 4))
184/* Chip Select Enable (3) */
185#define SSC_MCON_CSBEN (0x1 << 3)
186#define SSC_MCON_CSBEN_VAL(val) (((val) & 0x1) << 3)
187#define SSC_MCON_CSBEN_GET(val) ((((val) & SSC_MCON_CSBEN) >> 3) & 0x1)
188#define SSC_MCON_CSBEN_SET(reg,val) (reg) = ((reg & ~SSC_MCON_CSBEN) | (((val) & 0x1) << 3))
189/* Chip Select Invert (2) */
190#define SSC_MCON_CSBINV (0x1 << 2)
191#define SSC_MCON_CSBINV_VAL(val) (((val) & 0x1) << 2)
192#define SSC_MCON_CSBINV_GET(val) ((((val) & SSC_MCON_CSBINV) >> 2) & 0x1)
193#define SSC_MCON_CSBINV_SET(reg,val) (reg) = ((reg & ~SSC_MCON_CSBINV) | (((val) & 0x1) << 2))
194/* Receive Off (1) */
195#define SSC_MCON_RXOFF (0x1 << 1)
196#define SSC_MCON_RXOFF_VAL(val) (((val) & 0x1) << 1)
197#define SSC_MCON_RXOFF_GET(val) ((((val) & SSC_MCON_RXOFF) >> 1) & 0x1)
198#define SSC_MCON_RXOFF_SET(reg,val) (reg) = ((reg & ~SSC_MCON_RXOFF) | (((val) & 0x1) << 1))
199/* Transmit Off (0) */
200#define SSC_MCON_TXOFF (0x1)
201#define SSC_MCON_TXOFF_VAL(val) (((val) & 0x1) << 0)
202#define SSC_MCON_TXOFF_GET(val) ((((val) & SSC_MCON_TXOFF) >> 0) & 0x1)
203#define SSC_MCON_TXOFF_SET(reg,val) (reg) = ((reg & ~SSC_MCON_TXOFF) | (((val) & 0x1) << 0))
204
205/*******************************************************************************
206 * STATE Register
207 ******************************************************************************/
208
209/* Receive End-of-Message (31) */
210#define SSC_STATE_RXEOM (0x1 << 31)
211#define SSC_STATE_RXEOM_GET(val) ((((val) & SSC_STATE_RXEOM) >> 31) & 0x1)
212/* Receive Byte Valid (30:28) */
213#define SSC_STATE_RXBV (0x7 << 28)
214#define SSC_STATE_RXBV_GET(val) ((((val) & SSC_STATE_RXBV) >> 28) & 0x7)
215/* Transmit End-of-Message (27) */
216#define SSC_STATE_TXEOM (0x1 << 27)
217#define SSC_STATE_TXEOM_GET(val) ((((val) & SSC_STATE_TXEOM) >> 27) & 0x1)
218/* Transmit Byte Valid (26:24) */
219#define SSC_STATE_TXBV (0x7 << 24)
220#define SSC_STATE_TXBV_GET(val) ((((val) & SSC_STATE_TXBV) >> 24) & 0x7)
221/* Bit Count Field (20:16) */
222#define SSC_STATE_BC (0x1f << 16)
223#define SSC_STATE_BC_GET(val) ((((val) & SSC_STATE_BC) >> 16) & 0x1f)
224/* Busy Flag (13) */
225#define SSC_STATE_BSY (0x1 << 13)
226#define SSC_STATE_BSY_GET(val) ((((val) & SSC_STATE_BSY) >> 13) & 0x1)
227/* Receive Underflow Error Flag (12) */
228#define SSC_STATE_RUE (0x1 << 12)
229#define SSC_STATE_RUE_GET(val) ((((val) & SSC_STATE_RUE) >> 12) & 0x1)
230/* Transmit Underflow Error Flag (11) */
231#define SSC_STATE_TUE (0x1 << 11)
232#define SSC_STATE_TUE_GET(val) ((((val) & SSC_STATE_TUE) >> 11) & 0x1)
233/* Abort Error Flag (10) */
234#define SSC_STATE_AE (0x1 << 10)
235#define SSC_STATE_AE_GET(val) ((((val) & SSC_STATE_AE) >> 10) & 0x1)
236/* Receive Error Flag (9) */
237#define SSC_STATE_RE (0x1 << 9)
238#define SSC_STATE_RE_GET(val) ((((val) & SSC_STATE_RE) >> 9) & 0x1)
239/* Transmit Error Flag (8) */
240#define SSC_STATE_TE (0x1 << 8)
241#define SSC_STATE_TE_GET(val) ((((val) & SSC_STATE_TE) >> 8) & 0x1)
242/* Mode Error Flag (7) */
243#define SSC_STATE_ME (0x1 << 7)
244#define SSC_STATE_ME_GET(val) ((((val) & SSC_STATE_ME) >> 7) & 0x1)
245/* Slave Selected (2) */
246#define SSC_STATE_SSEL (0x1 << 2)
247#define SSC_STATE_SSEL_GET(val) ((((val) & SSC_STATE_SSEL) >> 2) & 0x1)
248/* Master Select Bit (1) */
249#define SSC_STATE_MS (0x1 << 1)
250#define SSC_STATE_MS_GET(val) ((((val) & SSC_STATE_MS) >> 1) & 0x1)
251/* Enable Bit (0) */
252#define SSC_STATE_EN (0x1)
253#define SSC_STATE_EN_GET(val) ((((val) & SSC_STATE_EN) >> 0) & 0x1)
254
255/*******************************************************************************
256 * WHBSTATE Register
257 ******************************************************************************/
258
259/* Set Transmit Underflow Error Flag Bit (15) */
260#define SSC_WHBSTATE_SETTUE (0x1 << 15)
261#define SSC_WHBSTATE_SETTUE_VAL(val) (((val) & 0x1) << 15)
262#define SSC_WHBSTATE_SETTUE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETTUE) | (val) & 1) << 15)
263/* Set Abort Error Flag Bit (14) */
264#define SSC_WHBSTATE_SETAE (0x1 << 14)
265#define SSC_WHBSTATE_SETAE_VAL(val) (((val) & 0x1) << 14)
266#define SSC_WHBSTATE_SETAE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETAE) | (val) & 1) << 14)
267/* Set Receive Error Flag Bit (13) */
268#define SSC_WHBSTATE_SETRE (0x1 << 13)
269#define SSC_WHBSTATE_SETRE_VAL(val) (((val) & 0x1) << 13)
270#define SSC_WHBSTATE_SETRE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETRE) | (val) & 1) << 13)
271/* Set Transmit Error Flag Bit (12) */
272#define SSC_WHBSTATE_SETTE (0x1 << 12)
273#define SSC_WHBSTATE_SETTE_VAL(val) (((val) & 0x1) << 12)
274#define SSC_WHBSTATE_SETTE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETTE) | (val) & 1) << 12)
275/* Clear Transmit Underflow Error Flag Bit (11) */
276#define SSC_WHBSTATE_CLRTUE (0x1 << 11)
277#define SSC_WHBSTATE_CLRTUE_VAL(val) (((val) & 0x1) << 11)
278#define SSC_WHBSTATE_CLRTUE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRTUE) | (val) & 1) << 11)
279/* Clear Abort Error Flag Bit (10) */
280#define SSC_WHBSTATE_CLRAE (0x1 << 10)
281#define SSC_WHBSTATE_CLRAE_VAL(val) (((val) & 0x1) << 10)
282#define SSC_WHBSTATE_CLRAE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRAE) | (val) & 1) << 10)
283/* Clear Receive Error Flag Bit (9) */
284#define SSC_WHBSTATE_CLRRE (0x1 << 9)
285#define SSC_WHBSTATE_CLRRE_VAL(val) (((val) & 0x1) << 9)
286#define SSC_WHBSTATE_CLRRE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRRE) | (val) & 1) << 9)
287/* Clear Transmit Error Flag Bit (8) */
288#define SSC_WHBSTATE_CLRTE (0x1 << 8)
289#define SSC_WHBSTATE_CLRTE_VAL(val) (((val) & 0x1) << 8)
290#define SSC_WHBSTATE_CLRTE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRTE) | (val) & 1) << 8)
291/* Set Mode Error Flag Bit (7) */
292#define SSC_WHBSTATE_SETME (0x1 << 7)
293#define SSC_WHBSTATE_SETME_VAL(val) (((val) & 0x1) << 7)
294#define SSC_WHBSTATE_SETME_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETME) | (val) & 1) << 7)
295/* Clear Mode Error Flag Bit (6) */
296#define SSC_WHBSTATE_CLRME (0x1 << 6)
297#define SSC_WHBSTATE_CLRME_VAL(val) (((val) & 0x1) << 6)
298#define SSC_WHBSTATE_CLRME_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRME) | (val) & 1) << 6)
299/* Set Receive Underflow Error Bit (5) */
300#define SSC_WHBSTATE_SETRUE (0x1 << 5)
301#define SSC_WHBSTATE_SETRUE_VAL(val) (((val) & 0x1) << 5)
302#define SSC_WHBSTATE_SETRUE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETRUE) | (val) & 1) << 5)
303/* Clear Receive Underflow Error Bit (4) */
304#define SSC_WHBSTATE_CLRRUE (0x1 << 4)
305#define SSC_WHBSTATE_CLRRUE_VAL(val) (((val) & 0x1) << 4)
306#define SSC_WHBSTATE_CLRRUE_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRRUE) | (val) & 1) << 4)
307/* Set Master Select Bit (3) */
308#define SSC_WHBSTATE_SETMS (0x1 << 3)
309#define SSC_WHBSTATE_SETMS_VAL(val) (((val) & 0x1) << 3)
310#define SSC_WHBSTATE_SETMS_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETMS) | (val) & 1) << 3)
311/* Clear Master Select Bit (2) */
312#define SSC_WHBSTATE_CLRMS (0x1 << 2)
313#define SSC_WHBSTATE_CLRMS_VAL(val) (((val) & 0x1) << 2)
314#define SSC_WHBSTATE_CLRMS_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLRMS) | (val) & 1) << 2)
315/* Set Enable Bit (1) */
316#define SSC_WHBSTATE_SETEN (0x1 << 1)
317#define SSC_WHBSTATE_SETEN_VAL(val) (((val) & 0x1) << 1)
318#define SSC_WHBSTATE_SETEN_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_SETEN) | (val) & 1) << 1)
319/* Clear Enable Bit (0) */
320#define SSC_WHBSTATE_CLREN (0x1)
321#define SSC_WHBSTATE_CLREN_VAL(val) (((val) & 0x1) << 0)
322#define SSC_WHBSTATE_CLREN_SET(reg,val) (reg) = (((reg & ~SSC_WHBSTATE_CLREN) | (val) & 1) << 0)
323
324/*******************************************************************************
325 * TB Register
326 ******************************************************************************/
327
328/* Transmit Data Register Value (31:0) */
329#define SSC_TB_TB_VAL (0xFFFFFFFFL)
330#define SSC_TB_TB_VAL_VAL(val) (((val) & 0xFFFFFFFFL) << 0)
331#define SSC_TB_TB_VAL_GET(val) ((((val) & SSC_TB_TB_VAL) >> 0) & 0xFFFFFFFFL)
332#define SSC_TB_TB_VAL_SET(reg,val) (reg) = ((reg & ~SSC_TB_TB_VAL) | (((val) & 0xFFFFFFFFL) << 0))
333
334/*******************************************************************************
335 * RB Register
336 ******************************************************************************/
337
338/* Receive Data Register Value (31:0) */
339#define SSC_RB_RB_VAL (0xFFFFFFFFL)
340#define SSC_RB_RB_VAL_GET(val) ((((val) & SSC_RB_RB_VAL) >> 0) & 0xFFFFFFFFL)
341
342/*******************************************************************************
343 * FSTAT Register
344 ******************************************************************************/
345
346/* Transmit FIFO Filling Level (13:8) */
347#define SSC_FSTAT_TXFFL (0x3f << 8)
348#define SSC_FSTAT_TXFFL_GET(val) ((((val) & SSC_FSTAT_TXFFL) >> 8) & 0x3f)
349/* Receive FIFO Filling Level (5:0) */
350#define SSC_FSTAT_RXFFL (0x3f)
351#define SSC_FSTAT_RXFFL_GET(val) ((((val) & SSC_FSTAT_RXFFL) >> 0) & 0x3f)
352
353/*******************************************************************************
354 * PISEL Register
355 ******************************************************************************/
356
357/* Slave Mode Clock Input Select (2) */
358#define SSC_PISEL_CIS (0x1 << 2)
359#define SSC_PISEL_CIS_VAL(val) (((val) & 0x1) << 2)
360#define SSC_PISEL_CIS_GET(val) ((((val) & SSC_PISEL_CIS) >> 2) & 0x1)
361#define SSC_PISEL_CIS_SET(reg,val) (reg) = ((reg & ~SSC_PISEL_CIS) | (((val) & 0x1) << 2))
362/* Slave Mode Receiver Input Select (1) */
363#define SSC_PISEL_SIS (0x1 << 1)
364#define SSC_PISEL_SIS_VAL(val) (((val) & 0x1) << 1)
365#define SSC_PISEL_SIS_GET(val) ((((val) & SSC_PISEL_SIS) >> 1) & 0x1)
366#define SSC_PISEL_SIS_SET(reg,val) (reg) = ((reg & ~SSC_PISEL_SIS) | (((val) & 0x1) << 1))
367/* Master Mode Receiver Input Select (0) */
368#define SSC_PISEL_MIS (0x1)
369#define SSC_PISEL_MIS_VAL(val) (((val) & 0x1) << 0)
370#define SSC_PISEL_MIS_GET(val) ((((val) & SSC_PISEL_MIS) >> 0) & 0x1)
371#define SSC_PISEL_MIS_SET(reg,val) (reg) = ((reg & ~SSC_PISEL_MIS) | (((val) & 0x1) << 0))
372
373/*******************************************************************************
374 * RXFCON Register
375 ******************************************************************************/
376
377/* Receive FIFO Interrupt Trigger Level (13:8) */
378#define SSC_RXFCON_RXFITL (0x3f << 8)
379#define SSC_RXFCON_RXFITL_VAL(val) (((val) & 0x3f) << 8)
380#define SSC_RXFCON_RXFITL_GET(val) ((((val) & SSC_RXFCON_RXFITL) >> 8) & 0x3f)
381#define SSC_RXFCON_RXFITL_SET(reg,val) (reg) = ((reg & ~SSC_RXFCON_RXFITL) | (((val) & 0x3f) << 8))
382/* Receive FIFO Flush (1) */
383#define SSC_RXFCON_RXFLU (0x1 << 1)
384#define SSC_RXFCON_RXFLU_VAL(val) (((val) & 0x1) << 1)
385#define SSC_RXFCON_RXFLU_SET(reg,val) (reg) = (((reg & ~SSC_RXFCON_RXFLU) | (val) & 1) << 1)
386/* Receive FIFO Enable (0) */
387#define SSC_RXFCON_RXFEN (0x1)
388#define SSC_RXFCON_RXFEN_VAL(val) (((val) & 0x1) << 0)
389#define SSC_RXFCON_RXFEN_GET(val) ((((val) & SSC_RXFCON_RXFEN) >> 0) & 0x1)
390#define SSC_RXFCON_RXFEN_SET(reg,val) (reg) = ((reg & ~SSC_RXFCON_RXFEN) | (((val) & 0x1) << 0))
391
392/*******************************************************************************
393 * TXFCON Register
394 ******************************************************************************/
395
396/* Transmit FIFO Interrupt Trigger Level (13:8) */
397#define SSC_TXFCON_TXFITL (0x3f << 8)
398#define SSC_TXFCON_TXFITL_VAL(val) (((val) & 0x3f) << 8)
399#define SSC_TXFCON_TXFITL_GET(val) ((((val) & SSC_TXFCON_TXFITL) >> 8) & 0x3f)
400#define SSC_TXFCON_TXFITL_SET(reg,val) (reg) = ((reg & ~SSC_TXFCON_TXFITL) | (((val) & 0x3f) << 8))
401/* Transmit FIFO Flush (1) */
402#define SSC_TXFCON_TXFLU (0x1 << 1)
403#define SSC_TXFCON_TXFLU_VAL(val) (((val) & 0x1) << 1)
404#define SSC_TXFCON_TXFLU_SET(reg,val) (reg) = (((reg & ~SSC_TXFCON_TXFLU) | (val) & 1) << 1)
405/* Transmit FIFO Enable (0) */
406#define SSC_TXFCON_TXFEN (0x1)
407#define SSC_TXFCON_TXFEN_VAL(val) (((val) & 0x1) << 0)
408#define SSC_TXFCON_TXFEN_GET(val) ((((val) & SSC_TXFCON_TXFEN) >> 0) & 0x1)
409#define SSC_TXFCON_TXFEN_SET(reg,val) (reg) = ((reg & ~SSC_TXFCON_TXFEN) | (((val) & 0x1) << 0))
410
411/*******************************************************************************
412 * BR Register
413 ******************************************************************************/
414
415/* Baudrate Timer Reload Register Value (15:0) */
416#define SSC_BR_BR_VAL (0xffff)
417#define SSC_BR_BR_VAL_VAL(val) (((val) & 0xffff) << 0)
418#define SSC_BR_BR_VAL_GET(val) ((((val) & SSC_BR_BR_VAL) >> 0) & 0xffff)
419#define SSC_BR_BR_VAL_SET(reg,val) (reg) = ((reg & ~SSC_BR_BR_VAL) | (((val) & 0xffff) << 0))
420
421/*******************************************************************************
422 * BRSTAT Register
423 ******************************************************************************/
424
425/* Baudrate Timer Register Value (15:0) */
426#define SSC_BRSTAT_BT_VAL (0xffff)
427#define SSC_BRSTAT_BT_VAL_GET(val) ((((val) & SSC_BRSTAT_BT_VAL) >> 0) & 0xffff)
428
429/*******************************************************************************
430 * SFCON Register
431 ******************************************************************************/
432
433/* Pause Length (31:22) */
434#define SSC_SFCON_PLEN (0x3ff << 22)
435#define SSC_SFCON_PLEN_VAL(val) (((val) & 0x3ff) << 22)
436#define SSC_SFCON_PLEN_GET(val) ((((val) & SSC_SFCON_PLEN) >> 22) & 0x3ff)
437#define SSC_SFCON_PLEN_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_PLEN) | (((val) & 0x3ff) << 22))
438/* Stop After Pause (20) */
439#define SSC_SFCON_STOP (0x1 << 20)
440#define SSC_SFCON_STOP_VAL(val) (((val) & 0x1) << 20)
441#define SSC_SFCON_STOP_GET(val) ((((val) & SSC_SFCON_STOP) >> 20) & 0x1)
442#define SSC_SFCON_STOP_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_STOP) | (((val) & 0x1) << 20))
443/* Idle Clock Configuration (19:18) */
444#define SSC_SFCON_ICLK (0x3 << 18)
445#define SSC_SFCON_ICLK_VAL(val) (((val) & 0x3) << 18)
446#define SSC_SFCON_ICLK_GET(val) ((((val) & SSC_SFCON_ICLK) >> 18) & 0x3)
447#define SSC_SFCON_ICLK_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_ICLK) | (((val) & 0x3) << 18))
448/* Idle Data Configuration (17:16) */
449#define SSC_SFCON_IDAT (0x3 << 16)
450#define SSC_SFCON_IDAT_VAL(val) (((val) & 0x3) << 16)
451#define SSC_SFCON_IDAT_GET(val) ((((val) & SSC_SFCON_IDAT) >> 16) & 0x3)
452#define SSC_SFCON_IDAT_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_IDAT) | (((val) & 0x3) << 16))
453/* Data Length (15:4) */
454#define SSC_SFCON_DLEN (0xfff << 4)
455#define SSC_SFCON_DLEN_VAL(val) (((val) & 0xfff) << 4)
456#define SSC_SFCON_DLEN_GET(val) ((((val) & SSC_SFCON_DLEN) >> 4) & 0xfff)
457#define SSC_SFCON_DLEN_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_DLEN) | (((val) & 0xfff) << 4))
458/* Enable Interrupt After Pause (3) */
459#define SSC_SFCON_IAEN (0x1 << 3)
460#define SSC_SFCON_IAEN_VAL(val) (((val) & 0x1) << 3)
461#define SSC_SFCON_IAEN_GET(val) ((((val) & SSC_SFCON_IAEN) >> 3) & 0x1)
462#define SSC_SFCON_IAEN_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_IAEN) | (((val) & 0x1) << 3))
463/* Enable Interrupt Before Pause (2) */
464#define SSC_SFCON_IBEN (0x1 << 2)
465#define SSC_SFCON_IBEN_VAL(val) (((val) & 0x1) << 2)
466#define SSC_SFCON_IBEN_GET(val) ((((val) & SSC_SFCON_IBEN) >> 2) & 0x1)
467#define SSC_SFCON_IBEN_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_IBEN) | (((val) & 0x1) << 2))
468/* Serial Frame Enable (0) */
469#define SSC_SFCON_SFEN (0x1)
470#define SSC_SFCON_SFEN_VAL(val) (((val) & 0x1) << 0)
471#define SSC_SFCON_SFEN_GET(val) ((((val) & SSC_SFCON_SFEN) >> 0) & 0x1)
472#define SSC_SFCON_SFEN_SET(reg,val) (reg) = ((reg & ~SSC_SFCON_SFEN) | (((val) & 0x1) << 0))
473
474/*******************************************************************************
475 * SFSTAT Register
476 ******************************************************************************/
477
478/* Pause Count (31:22) */
479#define SSC_SFSTAT_PCNT (0x3ff << 22)
480#define SSC_SFSTAT_PCNT_GET(val) ((((val) & SSC_SFSTAT_PCNT) >> 22) & 0x3ff)
481/* Data Bit Count (15:4) */
482#define SSC_SFSTAT_DCNT (0xfff << 4)
483#define SSC_SFSTAT_DCNT_GET(val) ((((val) & SSC_SFSTAT_DCNT) >> 4) & 0xfff)
484/* Pause Busy (1) */
485#define SSC_SFSTAT_PBSY (0x1 << 1)
486#define SSC_SFSTAT_PBSY_GET(val) ((((val) & SSC_SFSTAT_PBSY) >> 1) & 0x1)
487/* Data Busy (0) */
488#define SSC_SFSTAT_DBSY (0x1)
489#define SSC_SFSTAT_DBSY_GET(val) ((((val) & SSC_SFSTAT_DBSY) >> 0) & 0x1)
490
491/*******************************************************************************
492 * GPOCON Register
493 ******************************************************************************/
494
495/* Output OUTn Is Chip Select (15:8) */
496#define SSC_GPOCON_ISCSBN (0xff << 8)
497#define SSC_GPOCON_ISCSBN_VAL(val) (((val) & 0xff) << 8)
498#define SSC_GPOCON_ISCSBN_GET(val) ((((val) & SSC_GPOCON_ISCSBN) >> 8) & 0xff)
499#define SSC_GPOCON_ISCSBN_SET(reg,val) (reg) = ((reg & ~SSC_GPOCON_ISCSBN) | (((val) & 0xff) << 8))
500/* Invert Output OUTn (7:0) */
501#define SSC_GPOCON_INVOUTN (0xff)
502#define SSC_GPOCON_INVOUTN_VAL(val) (((val) & 0xff) << 0)
503#define SSC_GPOCON_INVOUTN_GET(val) ((((val) & SSC_GPOCON_INVOUTN) >> 0) & 0xff)
504#define SSC_GPOCON_INVOUTN_SET(reg,val) (reg) = ((reg & ~SSC_GPOCON_INVOUTN) | (((val) & 0xff) << 0))
505
506/*******************************************************************************
507 * GPOSTAT Register
508 ******************************************************************************/
509
510/* Output Register Bit n (7:0) */
511#define SSC_GPOSTAT_OUTN (0xff)
512#define SSC_GPOSTAT_OUTN_GET(val) ((((val) & SSC_GPOSTAT_OUTN) >> 0) & 0xff)
513
514/*******************************************************************************
515 * WHBGPOSTAT
516 ******************************************************************************/
517
518/* Set Output Register Bit n (15:8) */
519#define SSC_WHBGPOSTAT_SETOUTN (0xff << 8)
520#define SSC_WHBGPOSTAT_SETOUTN_VAL(val) (((val) & 0xff) << 8)
521#define SSC_WHBGPOSTAT_SETOUTN_SET(reg,val) (reg) = (((reg & ~SSC_WHBGPOSTAT_SETOUTN) | (val) & 1) << 8)
522/* Clear Output Register Bit n (7:0) */
523#define SSC_WHBGPOSTAT_CLROUTN (0xff)
524#define SSC_WHBGPOSTAT_CLROUTN_VAL(val) (((val) & 0xff) << 0)
525#define SSC_WHBGPOSTAT_CLROUTN_SET(reg,val) (reg) = (((reg & ~SSC_WHBGPOSTAT_CLROUTN) | (val) & 1) << 0)
526
527/*******************************************************************************
528 * RXREQ Register
529 ******************************************************************************/
530
531/* Receive Count Value (15:0) */
532#define SSC_RXREQ_RXCNT (0xffff)
533#define SSC_RXREQ_RXCNT_VAL(val) (((val) & 0xffff) << 0)
534#define SSC_RXREQ_RXCNT_GET(val) ((((val) & SSC_RXREQ_RXCNT) >> 0) & 0xffff)
535#define SSC_RXREQ_RXCNT_SET(reg,val) (reg) = ((reg & ~SSC_RXREQ_RXCNT) | (((val) & 0xffff) << 0))
536
537/*******************************************************************************
538 * RXCNT Register
539 ******************************************************************************/
540
541/* Receive To Do Value (15:0) */
542#define SSC_RXCNT_TODO (0xffff)
543#define SSC_RXCNT_TODO_GET(val) ((((val) & SSC_RXCNT_TODO) >> 0) & 0xffff)
544
545/*******************************************************************************
546 * DMA_CON Register
547 ******************************************************************************/
548
549/* Receive Class (3:2) */
550#define SSC_DMA_CON_RXCLS (0x3 << 2)
551#define SSC_DMA_CON_RXCLS_VAL(val) (((val) & 0x3) << 2)
552#define SSC_DMA_CON_RXCLS_GET(val) ((((val) & SSC_DMA_CON_RXCLS) >> 2) & 0x3)
553#define SSC_DMA_CON_RXCLS_SET(reg,val) (reg) = ((reg & ~SSC_DMA_CON_RXCLS) | (((val) & 0x3) << 2))
554/* Transmit Path On (1) */
555#define SSC_DMA_CON_TXON (0x1 << 1)
556#define SSC_DMA_CON_TXON_VAL(val) (((val) & 0x1) << 1)
557#define SSC_DMA_CON_TXON_GET(val) ((((val) & SSC_DMA_CON_TXON) >> 1) & 0x1)
558#define SSC_DMA_CON_TXON_SET(reg,val) (reg) = ((reg & ~SSC_DMA_CON_TXON) | (((val) & 0x1) << 1))
559/* Receive Path On (0) */
560#define SSC_DMA_CON_RXON (0x1)
561#define SSC_DMA_CON_RXON_VAL(val) (((val) & 0x1) << 0)
562#define SSC_DMA_CON_RXON_GET(val) ((((val) & SSC_DMA_CON_RXON) >> 0) & 0x1)
563#define SSC_DMA_CON_RXON_SET(reg,val) (reg) = ((reg & ~SSC_DMA_CON_RXON) | (((val) & 0x1) << 0))
564
565/*******************************************************************************
566 * IRNEN Register
567 ******************************************************************************/
568
569/* Frame End Interrupt Request Enable (3) */
570#define SSC_IRNEN_F (0x1 << 3)
571#define SSC_IRNEN_F_VAL(val) (((val) & 0x1) << 3)
572#define SSC_IRNEN_F_GET(val) ((((val) & SSC_IRNEN_F) >> 3) & 0x1)
573#define SSC_IRNEN_F_SET(reg,val) (reg) = ((reg & ~SSC_IRNEN_F) | (((val) & 0x1) << 3))
574/* Error Interrupt Request Enable (2) */
575#define SSC_IRNEN_E (0x1 << 2)
576#define SSC_IRNEN_E_VAL(val) (((val) & 0x1) << 2)
577#define SSC_IRNEN_E_GET(val) ((((val) & SSC_IRNEN_E) >> 2) & 0x1)
578#define SSC_IRNEN_E_SET(reg,val) (reg) = ((reg & ~SSC_IRNEN_E) | (((val) & 0x1) << 2))
579/* Receive Interrupt Request Enable (1) */
580#define SSC_IRNEN_R (0x1 << 1)
581#define SSC_IRNEN_R_VAL(val) (((val) & 0x1) << 1)
582#define SSC_IRNEN_R_GET(val) ((((val) & SSC_IRNEN_R) >> 1) & 0x1)
583#define SSC_IRNEN_R_SET(reg,val) (reg) = ((reg & ~SSC_IRNEN_R) | (((val) & 0x1) << 1))
584/* Transmit Interrupt Request Enable (0) */
585#define SSC_IRNEN_T (0x1)
586#define SSC_IRNEN_T_VAL(val) (((val) & 0x1) << 0)
587#define SSC_IRNEN_T_GET(val) ((((val) & SSC_IRNEN_T) >> 0) & 0x1)
588#define SSC_IRNEN_T_SET(reg,val) (reg) = ((reg & ~SSC_IRNEN_T) | (((val) & 0x1) << 0))
589
590/*******************************************************************************
591 * IRNICR Register
592 ******************************************************************************/
593
594/* Frame End Interrupt Request (3) */
595#define SSC_IRNICR_F (0x1 << 3)
596#define SSC_IRNICR_F_GET(val) ((((val) & SSC_IRNICR_F) >> 3) & 0x1)
597/* Error Interrupt Request (2) */
598#define SSC_IRNICR_E (0x1 << 2)
599#define SSC_IRNICR_E_GET(val) ((((val) & SSC_IRNICR_E) >> 2) & 0x1)
600/* Receive Interrupt Request (1) */
601#define SSC_IRNICR_R (0x1 << 1)
602#define SSC_IRNICR_R_GET(val) ((((val) & SSC_IRNICR_R) >> 1) & 0x1)
603/* Transmit Interrupt Request (0) */
604#define SSC_IRNICR_T (0x1)
605#define SSC_IRNICR_T_GET(val) ((((val) & SSC_IRNICR_T) >> 0) & 0x1)
606
607/*******************************************************************************
608 * IRNCR Register
609 ******************************************************************************/
610
611/* Frame End Interrupt Request (3) */
612#define SSC_IRNCR_F (0x1 << 3)
613#define SSC_IRNCR_F_GET(val) ((((val) & SSC_IRNCR_F) >> 3) & 0x1)
614/* Error Interrupt Request (2) */
615#define SSC_IRNCR_E (0x1 << 2)
616#define SSC_IRNCR_E_GET(val) ((((val) & SSC_IRNCR_E) >> 2) & 0x1)
617/* Receive Interrupt Request (1) */
618#define SSC_IRNCR_R (0x1 << 1)
619#define SSC_IRNCR_R_GET(val) ((((val) & SSC_IRNCR_R) >> 1) & 0x1)
620/* Transmit Interrupt Request (0) */
621#define SSC_IRNCR_T (0x1)
622#define SSC_IRNCR_T_GET(val) ((((val) & SSC_IRNCR_T) >> 0) & 0x1)
623
624#endif /* __SSC_H */
625

Archive Download this file



interactive