hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
/*
 * Freescale i.MX28 SSP Register Definitions
 *
 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
 *
 * Based on code from LTIB:
 * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#ifndef __MX28_REGS_SSP_H__
#define __MX28_REGS_SSP_H__
 
#include <asm/mach-imx/regs-common.h>
 
#ifndef    __ASSEMBLY__
#if defined(CONFIG_MX23)
struct mxs_ssp_regs {
   mxs_reg_32(hw_ssp_ctrl0)
   mxs_reg_32(hw_ssp_cmd0)
   mxs_reg_32(hw_ssp_cmd1)
   mxs_reg_32(hw_ssp_compref)
   mxs_reg_32(hw_ssp_compmask)
   mxs_reg_32(hw_ssp_timing)
   mxs_reg_32(hw_ssp_ctrl1)
   mxs_reg_32(hw_ssp_data)
   mxs_reg_32(hw_ssp_sdresp0)
   mxs_reg_32(hw_ssp_sdresp1)
   mxs_reg_32(hw_ssp_sdresp2)
   mxs_reg_32(hw_ssp_sdresp3)
   mxs_reg_32(hw_ssp_status)
 
   uint32_t    reserved1[12];
 
   mxs_reg_32(hw_ssp_debug)
   mxs_reg_32(hw_ssp_version)
};
#elif defined(CONFIG_MX28)
struct mxs_ssp_regs {
   mxs_reg_32(hw_ssp_ctrl0)
   mxs_reg_32(hw_ssp_cmd0)
   mxs_reg_32(hw_ssp_cmd1)
   mxs_reg_32(hw_ssp_xfer_size)
   mxs_reg_32(hw_ssp_block_size)
   mxs_reg_32(hw_ssp_compref)
   mxs_reg_32(hw_ssp_compmask)
   mxs_reg_32(hw_ssp_timing)
   mxs_reg_32(hw_ssp_ctrl1)
   mxs_reg_32(hw_ssp_data)
   mxs_reg_32(hw_ssp_sdresp0)
   mxs_reg_32(hw_ssp_sdresp1)
   mxs_reg_32(hw_ssp_sdresp2)
   mxs_reg_32(hw_ssp_sdresp3)
   mxs_reg_32(hw_ssp_ddr_ctrl)
   mxs_reg_32(hw_ssp_dll_ctrl)
   mxs_reg_32(hw_ssp_status)
   mxs_reg_32(hw_ssp_dll_sts)
   mxs_reg_32(hw_ssp_debug)
   mxs_reg_32(hw_ssp_version)
};
#endif
 
static inline int mxs_ssp_bus_id_valid(int bus)
{
#if defined(CONFIG_MX23)
   const unsigned int mxs_ssp_chan_count = 2;
#elif defined(CONFIG_MX28)
   const unsigned int mxs_ssp_chan_count = 4;
#endif
 
   if (bus >= mxs_ssp_chan_count)
       return 0;
 
   if (bus < 0)
       return 0;
 
   return 1;
}
 
static inline int mxs_ssp_clock_by_bus(unsigned int clock)
{
#if defined(CONFIG_MX23)
   return 0;
#elif defined(CONFIG_MX28)
   return clock;
#endif
}
 
static inline struct mxs_ssp_regs *mxs_ssp_regs_by_bus(unsigned int port)
{
   switch (port) {
   case 0:
       return (struct mxs_ssp_regs *)MXS_SSP0_BASE;
   case 1:
       return (struct mxs_ssp_regs *)MXS_SSP1_BASE;
#ifdef CONFIG_MX28
   case 2:
       return (struct mxs_ssp_regs *)MXS_SSP2_BASE;
   case 3:
       return (struct mxs_ssp_regs *)MXS_SSP3_BASE;
#endif
   default:
       return NULL;
   }
}
#endif
 
#define    SSP_CTRL0_SFTRST            (1 << 31)
#define    SSP_CTRL0_CLKGATE            (1 << 30)
#define    SSP_CTRL0_RUN                (1 << 29)
#define    SSP_CTRL0_SDIO_IRQ_CHECK        (1 << 28)
#define    SSP_CTRL0_LOCK_CS            (1 << 27)
#define    SSP_CTRL0_IGNORE_CRC            (1 << 26)
#define    SSP_CTRL0_READ                (1 << 25)
#define    SSP_CTRL0_DATA_XFER            (1 << 24)
#define    SSP_CTRL0_BUS_WIDTH_MASK        (0x3 << 22)
#define    SSP_CTRL0_BUS_WIDTH_OFFSET        22
#define    SSP_CTRL0_BUS_WIDTH_ONE_BIT        (0x0 << 22)
#define    SSP_CTRL0_BUS_WIDTH_FOUR_BIT        (0x1 << 22)
#define    SSP_CTRL0_BUS_WIDTH_EIGHT_BIT        (0x2 << 22)
#define    SSP_CTRL0_WAIT_FOR_IRQ            (1 << 21)
#define    SSP_CTRL0_WAIT_FOR_CMD            (1 << 20)
#define    SSP_CTRL0_LONG_RESP            (1 << 19)
#define    SSP_CTRL0_CHECK_RESP            (1 << 18)
#define    SSP_CTRL0_GET_RESP            (1 << 17)
#define    SSP_CTRL0_ENABLE            (1 << 16)
 
#ifdef CONFIG_MX23
#define    SSP_CTRL0_XFER_COUNT_OFFSET        0
#define    SSP_CTRL0_XFER_COUNT_MASK        0xffff
#endif
 
#define    SSP_CMD0_SOFT_TERMINATE            (1 << 26)
#define    SSP_CMD0_DBL_DATA_RATE_EN        (1 << 25)
#define    SSP_CMD0_PRIM_BOOT_OP_EN        (1 << 24)
#define    SSP_CMD0_BOOT_ACK_EN            (1 << 23)
#define    SSP_CMD0_SLOW_CLKING_EN            (1 << 22)
#define    SSP_CMD0_CONT_CLKING_EN            (1 << 21)
#define    SSP_CMD0_APPEND_8CYC            (1 << 20)
#if defined(CONFIG_MX23)
#define    SSP_CMD0_BLOCK_SIZE_MASK        (0xf << 16)
#define    SSP_CMD0_BLOCK_SIZE_OFFSET        16
#define    SSP_CMD0_BLOCK_COUNT_MASK        (0xff << 8)
#define    SSP_CMD0_BLOCK_COUNT_OFFSET        8
#endif
#define    SSP_CMD0_CMD_MASK            0xff
#define    SSP_CMD0_CMD_OFFSET            0
#define    SSP_CMD0_CMD_MMC_GO_IDLE_STATE        0x00
#define    SSP_CMD0_CMD_MMC_SEND_OP_COND        0x01
#define    SSP_CMD0_CMD_MMC_ALL_SEND_CID        0x02
#define    SSP_CMD0_CMD_MMC_SET_RELATIVE_ADDR    0x03
#define    SSP_CMD0_CMD_MMC_SET_DSR        0x04
#define    SSP_CMD0_CMD_MMC_RESERVED_5        0x05
#define    SSP_CMD0_CMD_MMC_SWITCH            0x06
#define    SSP_CMD0_CMD_MMC_SELECT_DESELECT_CARD    0x07
#define    SSP_CMD0_CMD_MMC_SEND_EXT_CSD        0x08
#define    SSP_CMD0_CMD_MMC_SEND_CSD        0x09
#define    SSP_CMD0_CMD_MMC_SEND_CID        0x0a
#define    SSP_CMD0_CMD_MMC_READ_DAT_UNTIL_STOP    0x0b
#define    SSP_CMD0_CMD_MMC_STOP_TRANSMISSION    0x0c
#define    SSP_CMD0_CMD_MMC_SEND_STATUS        0x0d
#define    SSP_CMD0_CMD_MMC_BUSTEST_R        0x0e
#define    SSP_CMD0_CMD_MMC_GO_INACTIVE_STATE    0x0f
#define    SSP_CMD0_CMD_MMC_SET_BLOCKLEN        0x10
#define    SSP_CMD0_CMD_MMC_READ_SINGLE_BLOCK    0x11
#define    SSP_CMD0_CMD_MMC_READ_MULTIPLE_BLOCK    0x12
#define    SSP_CMD0_CMD_MMC_BUSTEST_W        0x13
#define    SSP_CMD0_CMD_MMC_WRITE_DAT_UNTIL_STOP    0x14
#define    SSP_CMD0_CMD_MMC_SET_BLOCK_COUNT    0x17
#define    SSP_CMD0_CMD_MMC_WRITE_BLOCK        0x18
#define    SSP_CMD0_CMD_MMC_WRITE_MULTIPLE_BLOCK    0x19
#define    SSP_CMD0_CMD_MMC_PROGRAM_CID        0x1a
#define    SSP_CMD0_CMD_MMC_PROGRAM_CSD        0x1b
#define    SSP_CMD0_CMD_MMC_SET_WRITE_PROT        0x1c
#define    SSP_CMD0_CMD_MMC_CLR_WRITE_PROT        0x1d
#define    SSP_CMD0_CMD_MMC_SEND_WRITE_PROT    0x1e
#define    SSP_CMD0_CMD_MMC_ERASE_GROUP_START    0x23
#define    SSP_CMD0_CMD_MMC_ERASE_GROUP_END    0x24
#define    SSP_CMD0_CMD_MMC_ERASE            0x26
#define    SSP_CMD0_CMD_MMC_FAST_IO        0x27
#define    SSP_CMD0_CMD_MMC_GO_IRQ_STATE        0x28
#define    SSP_CMD0_CMD_MMC_LOCK_UNLOCK        0x2a
#define    SSP_CMD0_CMD_MMC_APP_CMD        0x37
#define    SSP_CMD0_CMD_MMC_GEN_CMD        0x38
#define    SSP_CMD0_CMD_SD_GO_IDLE_STATE        0x00
#define    SSP_CMD0_CMD_SD_ALL_SEND_CID        0x02
#define    SSP_CMD0_CMD_SD_SEND_RELATIVE_ADDR    0x03
#define    SSP_CMD0_CMD_SD_SET_DSR            0x04
#define    SSP_CMD0_CMD_SD_IO_SEND_OP_COND        0x05
#define    SSP_CMD0_CMD_SD_SELECT_DESELECT_CARD    0x07
#define    SSP_CMD0_CMD_SD_SEND_CSD        0x09
#define    SSP_CMD0_CMD_SD_SEND_CID        0x0a
#define    SSP_CMD0_CMD_SD_STOP_TRANSMISSION    0x0c
#define    SSP_CMD0_CMD_SD_SEND_STATUS        0x0d
#define    SSP_CMD0_CMD_SD_GO_INACTIVE_STATE    0x0f
#define    SSP_CMD0_CMD_SD_SET_BLOCKLEN        0x10
#define    SSP_CMD0_CMD_SD_READ_SINGLE_BLOCK    0x11
#define    SSP_CMD0_CMD_SD_READ_MULTIPLE_BLOCK    0x12
#define    SSP_CMD0_CMD_SD_WRITE_BLOCK        0x18
#define    SSP_CMD0_CMD_SD_WRITE_MULTIPLE_BLOCK    0x19
#define    SSP_CMD0_CMD_SD_PROGRAM_CSD        0x1b
#define    SSP_CMD0_CMD_SD_SET_WRITE_PROT        0x1c
#define    SSP_CMD0_CMD_SD_CLR_WRITE_PROT        0x1d
#define    SSP_CMD0_CMD_SD_SEND_WRITE_PROT        0x1e
#define    SSP_CMD0_CMD_SD_ERASE_WR_BLK_START    0x20
#define    SSP_CMD0_CMD_SD_ERASE_WR_BLK_END    0x21
#define    SSP_CMD0_CMD_SD_ERASE_GROUP_START    0x23
#define    SSP_CMD0_CMD_SD_ERASE_GROUP_END        0x24
#define    SSP_CMD0_CMD_SD_ERASE            0x26
#define    SSP_CMD0_CMD_SD_LOCK_UNLOCK        0x2a
#define    SSP_CMD0_CMD_SD_IO_RW_DIRECT        0x34
#define    SSP_CMD0_CMD_SD_IO_RW_EXTENDED        0x35
#define    SSP_CMD0_CMD_SD_APP_CMD            0x37
#define    SSP_CMD0_CMD_SD_GEN_CMD            0x38
 
#define    SSP_CMD1_CMD_ARG_MASK            0xffffffff
#define    SSP_CMD1_CMD_ARG_OFFSET            0
 
#if defined(CONFIG_MX28)
#define    SSP_XFER_SIZE_XFER_COUNT_MASK        0xffffffff
#define    SSP_XFER_SIZE_XFER_COUNT_OFFSET        0
 
#define    SSP_BLOCK_SIZE_BLOCK_COUNT_MASK        (0xffffff << 4)
#define    SSP_BLOCK_SIZE_BLOCK_COUNT_OFFSET    4
#define    SSP_BLOCK_SIZE_BLOCK_SIZE_MASK        0xf
#define    SSP_BLOCK_SIZE_BLOCK_SIZE_OFFSET    0
#endif
 
#define    SSP_COMPREF_REFERENCE_MASK        0xffffffff
#define    SSP_COMPREF_REFERENCE_OFFSET        0
 
#define    SSP_COMPMASK_MASK_MASK            0xffffffff
#define    SSP_COMPMASK_MASK_OFFSET        0
 
#define    SSP_TIMING_TIMEOUT_MASK            (0xffff << 16)
#define    SSP_TIMING_TIMEOUT_OFFSET        16
#define    SSP_TIMING_CLOCK_DIVIDE_MASK        (0xff << 8)
#define    SSP_TIMING_CLOCK_DIVIDE_OFFSET        8
#define    SSP_TIMING_CLOCK_RATE_MASK        0xff
#define    SSP_TIMING_CLOCK_RATE_OFFSET        0
 
#define    SSP_CTRL1_SDIO_IRQ            (1 << 31)
#define    SSP_CTRL1_SDIO_IRQ_EN            (1 << 30)
#define    SSP_CTRL1_RESP_ERR_IRQ            (1 << 29)
#define    SSP_CTRL1_RESP_ERR_IRQ_EN        (1 << 28)
#define    SSP_CTRL1_RESP_TIMEOUT_IRQ        (1 << 27)
#define    SSP_CTRL1_RESP_TIMEOUT_IRQ_EN        (1 << 26)
#define    SSP_CTRL1_DATA_TIMEOUT_IRQ        (1 << 25)
#define    SSP_CTRL1_DATA_TIMEOUT_IRQ_EN        (1 << 24)
#define    SSP_CTRL1_DATA_CRC_IRQ            (1 << 23)
#define    SSP_CTRL1_DATA_CRC_IRQ_EN        (1 << 22)
#define    SSP_CTRL1_FIFO_UNDERRUN_IRQ        (1 << 21)
#define    SSP_CTRL1_FIFO_UNDERRUN_EN        (1 << 20)
#define    SSP_CTRL1_CEATA_CCS_ERR_IRQ        (1 << 19)
#define    SSP_CTRL1_CEATA_CCS_ERR_IRQ_EN        (1 << 18)
#define    SSP_CTRL1_RECV_TIMEOUT_IRQ        (1 << 17)
#define    SSP_CTRL1_RECV_TIMEOUT_IRQ_EN        (1 << 16)
#define    SSP_CTRL1_FIFO_OVERRUN_IRQ        (1 << 15)
#define    SSP_CTRL1_FIFO_OVERRUN_IRQ_EN        (1 << 14)
#define    SSP_CTRL1_DMA_ENABLE            (1 << 13)
#define    SSP_CTRL1_CEATA_CCS_ERR_EN        (1 << 12)
#define    SSP_CTRL1_SLAVE_OUT_DISABLE        (1 << 11)
#define    SSP_CTRL1_PHASE                (1 << 10)
#define    SSP_CTRL1_POLARITY            (1 << 9)
#define    SSP_CTRL1_SLAVE_MODE            (1 << 8)
#define    SSP_CTRL1_WORD_LENGTH_MASK        (0xf << 4)
#define    SSP_CTRL1_WORD_LENGTH_OFFSET        4
#define    SSP_CTRL1_WORD_LENGTH_RESERVED0        (0x0 << 4)
#define    SSP_CTRL1_WORD_LENGTH_RESERVED1        (0x1 << 4)
#define    SSP_CTRL1_WORD_LENGTH_RESERVED2        (0x2 << 4)
#define    SSP_CTRL1_WORD_LENGTH_FOUR_BITS        (0x3 << 4)
#define    SSP_CTRL1_WORD_LENGTH_EIGHT_BITS    (0x7 << 4)
#define    SSP_CTRL1_WORD_LENGTH_SIXTEEN_BITS    (0xf << 4)
#define    SSP_CTRL1_SSP_MODE_MASK            0xf
#define    SSP_CTRL1_SSP_MODE_OFFSET        0
#define    SSP_CTRL1_SSP_MODE_SPI            0x0
#define    SSP_CTRL1_SSP_MODE_SSI            0x1
#define    SSP_CTRL1_SSP_MODE_SD_MMC        0x3
#define    SSP_CTRL1_SSP_MODE_MS            0x4
 
#define    SSP_DATA_DATA_MASK            0xffffffff
#define    SSP_DATA_DATA_OFFSET            0
 
#define    SSP_SDRESP0_RESP0_MASK            0xffffffff
#define    SSP_SDRESP0_RESP0_OFFSET        0
 
#define    SSP_SDRESP1_RESP1_MASK            0xffffffff
#define    SSP_SDRESP1_RESP1_OFFSET        0
 
#define    SSP_SDRESP2_RESP2_MASK            0xffffffff
#define    SSP_SDRESP2_RESP2_OFFSET        0
 
#define    SSP_SDRESP3_RESP3_MASK            0xffffffff
#define    SSP_SDRESP3_RESP3_OFFSET        0
 
#define    SSP_DDR_CTRL_DMA_BURST_TYPE_MASK    (0x3 << 30)
#define    SSP_DDR_CTRL_DMA_BURST_TYPE_OFFSET    30
#define    SSP_DDR_CTRL_NIBBLE_POS            (1 << 1)
#define    SSP_DDR_CTRL_TXCLK_DELAY_TYPE        (1 << 0)
 
#define    SSP_DLL_CTRL_REF_UPDATE_INT_MASK    (0xf << 28)
#define    SSP_DLL_CTRL_REF_UPDATE_INT_OFFSET    28
#define    SSP_DLL_CTRL_SLV_UPDATE_INT_MASK    (0xff << 20)
#define    SSP_DLL_CTRL_SLV_UPDATE_INT_OFFSET    20
#define    SSP_DLL_CTRL_SLV_OVERRIDE_VAL_MASK    (0x3f << 10)
#define    SSP_DLL_CTRL_SLV_OVERRIDE_VAL_OFFSET    10
#define    SSP_DLL_CTRL_SLV_OVERRIDE        (1 << 9)
#define    SSP_DLL_CTRL_GATE_UPDATE        (1 << 7)
#define    SSP_DLL_CTRL_SLV_DLY_TARGET_MASK    (0xf << 3)
#define    SSP_DLL_CTRL_SLV_DLY_TARGET_OFFSET    3
#define    SSP_DLL_CTRL_SLV_FORCE_UPD        (1 << 2)
#define    SSP_DLL_CTRL_RESET            (1 << 1)
#define    SSP_DLL_CTRL_ENABLE            (1 << 0)
 
#define    SSP_STATUS_PRESENT            (1 << 31)
#define    SSP_STATUS_MS_PRESENT            (1 << 30)
#define    SSP_STATUS_SD_PRESENT            (1 << 29)
#define    SSP_STATUS_CARD_DETECT            (1 << 28)
#define    SSP_STATUS_DMABURST            (1 << 22)
#define    SSP_STATUS_DMASENSE            (1 << 21)
#define    SSP_STATUS_DMATERM            (1 << 20)
#define    SSP_STATUS_DMAREQ            (1 << 19)
#define    SSP_STATUS_DMAEND            (1 << 18)
#define    SSP_STATUS_SDIO_IRQ            (1 << 17)
#define    SSP_STATUS_RESP_CRC_ERR            (1 << 16)
#define    SSP_STATUS_RESP_ERR            (1 << 15)
#define    SSP_STATUS_RESP_TIMEOUT            (1 << 14)
#define    SSP_STATUS_DATA_CRC_ERR            (1 << 13)
#define    SSP_STATUS_TIMEOUT            (1 << 12)
#define    SSP_STATUS_RECV_TIMEOUT_STAT        (1 << 11)
#define    SSP_STATUS_CEATA_CCS_ERR        (1 << 10)
#define    SSP_STATUS_FIFO_OVRFLW            (1 << 9)
#define    SSP_STATUS_FIFO_FULL            (1 << 8)
#define    SSP_STATUS_FIFO_EMPTY            (1 << 5)
#define    SSP_STATUS_FIFO_UNDRFLW            (1 << 4)
#define    SSP_STATUS_CMD_BUSY            (1 << 3)
#define    SSP_STATUS_DATA_BUSY            (1 << 2)
#define    SSP_STATUS_BUSY                (1 << 0)
 
#define    SSP_DLL_STS_REF_SEL_MASK        (0x3f << 8)
#define    SSP_DLL_STS_REF_SEL_OFFSET        8
#define    SSP_DLL_STS_SLV_SEL_MASK        (0x3f << 2)
#define    SSP_DLL_STS_SLV_SEL_OFFSET        2
#define    SSP_DLL_STS_REF_LOCK            (1 << 1)
#define    SSP_DLL_STS_SLV_LOCK            (1 << 0)
 
#define    SSP_DEBUG_DATACRC_ERR_MASK        (0xf << 28)
#define    SSP_DEBUG_DATACRC_ERR_OFFSET        28
#define    SSP_DEBUG_DATA_STALL            (1 << 27)
#define    SSP_DEBUG_DAT_SM_MASK            (0x7 << 24)
#define    SSP_DEBUG_DAT_SM_OFFSET            24
#define    SSP_DEBUG_DAT_SM_DSM_IDLE        (0x0 << 24)
#define    SSP_DEBUG_DAT_SM_DSM_WORD        (0x2 << 24)
#define    SSP_DEBUG_DAT_SM_DSM_CRC1        (0x3 << 24)
#define    SSP_DEBUG_DAT_SM_DSM_CRC2        (0x4 << 24)
#define    SSP_DEBUG_DAT_SM_DSM_END        (0x5 << 24)
#define    SSP_DEBUG_MSTK_SM_MASK            (0xf << 20)
#define    SSP_DEBUG_MSTK_SM_OFFSET        20
#define    SSP_DEBUG_MSTK_SM_MSTK_IDLE        (0x0 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_CKON        (0x1 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_BS1        (0x2 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_TPC        (0x3 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_BS2        (0x4 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_HDSHK        (0x5 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_BS3        (0x6 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_RW        (0x7 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_CRC1        (0x8 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_CRC2        (0x9 << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_BS0        (0xa << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_END1        (0xb << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_END2W        (0xc << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_END2R        (0xd << 20)
#define    SSP_DEBUG_MSTK_SM_MSTK_DONE        (0xe << 20)
#define    SSP_DEBUG_CMD_OE            (1 << 19)
#define    SSP_DEBUG_DMA_SM_MASK            (0x7 << 16)
#define    SSP_DEBUG_DMA_SM_OFFSET            16
#define    SSP_DEBUG_DMA_SM_DMA_IDLE        (0x0 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_DMAREQ        (0x1 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_DMAACK        (0x2 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_STALL        (0x3 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_BUSY        (0x4 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_DONE        (0x5 << 16)
#define    SSP_DEBUG_DMA_SM_DMA_COUNT        (0x6 << 16)
#define    SSP_DEBUG_MMC_SM_MASK            (0xf << 12)
#define    SSP_DEBUG_MMC_SM_OFFSET            12
#define    SSP_DEBUG_MMC_SM_MMC_IDLE        (0x0 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_CMD        (0x1 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_TRC        (0x2 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_RESP        (0x3 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_RPRX        (0x4 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_TX            (0x5 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_CTOK        (0x6 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_RX            (0x7 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_CCS        (0x8 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_PUP        (0x9 << 12)
#define    SSP_DEBUG_MMC_SM_MMC_WAIT        (0xa << 12)
#define    SSP_DEBUG_CMD_SM_MASK            (0x3 << 10)
#define    SSP_DEBUG_CMD_SM_OFFSET            10
#define    SSP_DEBUG_CMD_SM_CSM_IDLE        (0x0 << 10)
#define    SSP_DEBUG_CMD_SM_CSM_INDEX        (0x1 << 10)
#define    SSP_DEBUG_CMD_SM_CSM_ARG        (0x2 << 10)
#define    SSP_DEBUG_CMD_SM_CSM_CRC        (0x3 << 10)
#define    SSP_DEBUG_SSP_CMD            (1 << 9)
#define    SSP_DEBUG_SSP_RESP            (1 << 8)
#define    SSP_DEBUG_SSP_RXD_MASK            0xff
#define    SSP_DEBUG_SSP_RXD_OFFSET        0
 
#define    SSP_VERSION_MAJOR_MASK            (0xff << 24)
#define    SSP_VERSION_MAJOR_OFFSET        24
#define    SSP_VERSION_MINOR_MASK            (0xff << 16)
#define    SSP_VERSION_MINOR_OFFSET        16
#define    SSP_VERSION_STEP_MASK            0xffff
#define    SSP_VERSION_STEP_OFFSET            0
 
#endif /* __MX28_REGS_SSP_H__ */