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
|
#ifndef CYGONCE_DEVS_SPI_FREESCALE_DSPI_IO_H
#define CYGONCE_DEVS_SPI_FREESCALE_DSPI_IO_H
//=============================================================================
//
// spi_freescale_dspi_io.h
//
// IO definitions for Freescale DSPI.
//
//=============================================================================
// ####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 2011 Free Software Foundation, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later
// version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License
// along with eCos; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// As a special exception, if other files instantiate templates or use
// macros or inline functions from this file, or you compile this file
// and link it with other works to produce a work based on this file,
// this file does not by itself cause the resulting work to be covered by
// the GNU General Public License. However the source code for this file
// must still be made available in accordance with section (3) of the GNU
// General Public License v2.
//
// This exception does not invalidate any other reasons why a work based
// on this file might be covered by the GNU General Public License.
// -------------------------------------------
// ####ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): ilijak
// Date: 2011-11-03
// Purpose: Freescale DSPI I/O definitions.
// Description:
// Usage: #include <cyg/io/spi_freescale_dspi_io.h>
//
//####DESCRIPTIONEND####
//
//=============================================================================
// ----------------------------------------------------------------------------
// DSPI
typedef volatile struct cyghwr_devs_freescale_dspi_s {
cyg_uint32 mcr; // Module Configuration Register
cyg_uint32 reserved_0;
cyg_uint32 tcr; // Transfer Count Register
// Clock and Transfer Attributes Register
cyg_uint32 ctar[CYGHWR_DEVS_SPI_FREESCALE_DSPI_CTAR_NUM];
#if CYGHWR_DEVS_SPI_FREESCALE_DSPI_CTAR_NUM < 8
cyg_uint32 reserved_1[8-CYGHWR_DEVS_SPI_FREESCALE_DSPI_CTAR_NUM];
#endif
cyg_uint32 sr; // Status Register
cyg_uint32 rser; // DMA/IRQ Request Select and Enable Register
cyg_uint32 pushr; // TX FIFO PUSH Register
cyg_uint32 popr; // RX FIFO POP Register
// Transmit FIFO Registers
cyg_uint32 txfr[CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE];
#if CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE < 16
cyg_uint32 reserved_2[16-CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE];
#endif
// Receive FIFO Registers
cyg_uint32 rxfr[CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE];
#if CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE < 16
cyg_uint32 reserved_3[16-CYGHWR_DEVS_SPI_FREESCALE_DSPI_FIFO_SIZE];
#endif
} cyghwr_devs_freescale_dspi_t;
// MCR Bit Fields
#define FREESCALE_DSPI_MCR_HALT_M 0x1
#define FREESCALE_DSPI_MCR_HALT_S 0
#define FREESCALE_DSPI_MCR_SMPL_PT_M 0x300
#define FREESCALE_DSPI_MCR_SMPL_PT_S 8
#define FREESCALE_DSPI_MCR_SMPL_PT(__val) \
VALUE_(FREESCALE_DSPI_MCR_SMPL_PT_S, __val)
#define FREESCALE_DSPI_MCR_CLR_RXF_M 0x400
#define FREESCALE_DSPI_MCR_CLR_RXF_S 10
#define FREESCALE_DSPI_MCR_CLR_TXF_M 0x800
#define FREESCALE_DSPI_MCR_CLR_TXF_S 11
#define FREESCALE_DSPI_MCR_DIS_RXF_M 0x1000
#define FREESCALE_DSPI_MCR_DIS_RXF_S 12
#define FREESCALE_DSPI_MCR_DIS_TXF_M 0x2000
#define FREESCALE_DSPI_MCR_DIS_TXF_S 13
#define FREESCALE_DSPI_MCR_MDIS_M 0x4000
#define FREESCALE_DSPI_MCR_MDIS_S 14
#define FREESCALE_DSPI_MCR_DOZE_M 0x8000
#define FREESCALE_DSPI_MCR_DOZE_S 15
#define FREESCALE_DSPI_MCR_PCSIS_M 0x3F0000
#define FREESCALE_DSPI_MCR_PCSIS_S 16
#define FREESCALE_DSPI_MCR_PCSIS(__val) \
VALUE_(FREESCALE_DSPI_MCR_PCSIS_S, __val)
#define FREESCALE_DSPI_MCR_ROOE_M 0x1000000
#define FREESCALE_DSPI_MCR_ROOE_S 24
#define FREESCALE_DSPI_MCR_PCSSE_M 0x2000000
#define FREESCALE_DSPI_MCR_PCSSE_S 25
#define FREESCALE_DSPI_MCR_MTFE_M 0x4000000
#define FREESCALE_DSPI_MCR_MTFE_S 26
#define FREESCALE_DSPI_MCR_FRZ_M 0x8000000
#define FREESCALE_DSPI_MCR_FRZ_S 27
#define FREESCALE_DSPI_MCR_DCONF_M 0x30000000
#define FREESCALE_DSPI_MCR_DCONF_S 28
#define FREESCALE_DSPI_MCR_DCONF(__val) \
VALUE_(FREESCALE_DSPI_MCR_DCONF_S, __val)
#define FREESCALE_DSPI_MCR_CONT_SCKE_M 0x40000000
#define FREESCALE_DSPI_MCR_CONT_SCKE_S 30
#define FREESCALE_DSPI_MCR_MSTR_M 0x80000000
#define FREESCALE_DSPI_MCR_MSTR_S 31
// TCR Bit Fields
#define FREESCALE_DSPI_TCR_DSPI_TCNT_M 0xFFFF0000
#define FREESCALE_DSPI_TCR_DSPI_TCNT_S 16
#define FREESCALE_DSPI_TCR_DSPI_TCNT(__val) \
VALUE_(FREESCALE_DSPI_TCR_DSPI_TCNT_S, __val)
// CTAR Bit Fields
#define FREESCALE_DSPI_CTAR_BR_M 0xF
#define FREESCALE_DSPI_CTAR_BR_S 0
#define FREESCALE_DSPI_CTAR_BR(__val) \
VALUE_(FREESCALE_DSPI_CTAR_BR_S, __val)
#define FREESCALE_DSPI_CTAR_DT_M 0xF0
#define FREESCALE_DSPI_CTAR_DT_S 4
#define FREESCALE_DSPI_CTAR_DT(__val) \
VALUE_(FREESCALE_DSPI_CTAR_DT_S, __val)
#define FREESCALE_DSPI_CTAR_ASC_M 0xF00
#define FREESCALE_DSPI_CTAR_ASC_S 8
#define FREESCALE_DSPI_CTAR_ASC(__val) \
VALUE_(FREESCALE_DSPI_CTAR_ASC_S, __val)
#define FREESCALE_DSPI_CTAR_CSSCK_M 0xF000
#define FREESCALE_DSPI_CTAR_CSSCK_S 12
#define FREESCALE_DSPI_CTAR_CSSCK(__val) \
VALUE_(FREESCALE_DSPI_CTAR_CSSCK_S, __val)
#define FREESCALE_DSPI_CTAR_PBR_M 0x30000
#define FREESCALE_DSPI_CTAR_PBR_S 16
#define FREESCALE_DSPI_CTAR_PBR(__val) \
VALUE_(FREESCALE_DSPI_CTAR_PBR_S, __val)
#define FREESCALE_DSPI_CTAR_PDT_M 0xC0000
#define FREESCALE_DSPI_CTAR_PDT_S 18
#define FREESCALE_DSPI_CTAR_PDT(__val) \
VALUE_(FREESCALE_DSPI_CTAR_PDT_S, __val)
#define FREESCALE_DSPI_CTAR_PASC_M 0x300000
#define FREESCALE_DSPI_CTAR_PASC_S 20
#define FREESCALE_DSPI_CTAR_PASC(__val) \
VALUE_(FREESCALE_DSPI_CTAR_PASC_S, __val)
#define FREESCALE_DSPI_CTAR_PCSSCK_S 22
#define FREESCALE_DSPI_CTAR_PCSSCK(__val) \
VALUE_(FREESCALE_DSPI_CTAR_PCSSCK_S, __val)
#define FREESCALE_DSPI_CTAR_LSBFE_S 24
#define FREESCALE_DSPI_CTAR_LSBFE_M 0x1000000
#define FREESCALE_DSPI_CTAR_FMSZ_M 0x78000000
#define FREESCALE_DSPI_CTAR_FMSZ_S 27
#define FREESCALE_DSPI_CTAR_FMSZ(__val) \
VALUE_(FREESCALE_DSPI_CTAR_FMSZ_S, __val)
#define FREESCALE_DSPI_CTAR_DBR_M 0x80000000
#define FREESCALE_DSPI_CTAR_DBR_S 31
// CTAR_SLAVE Bit Fields
#define FREESCALE_DSPI_CTAR_SLAVE_CPHA_M 0x2000000
#define FREESCALE_DSPI_CTAR_SLAVE_CPHA_S 25
#define FREESCALE_DSPI_CTAR_SLAVE_CPOL_M 0x4000000
#define FREESCALE_DSPI_CTAR_SLAVE_CPOL_S 26
#define FREESCALE_DSPI_CTAR_SLAVE_FMSZ_M 0xF8000000
#define FREESCALE_DSPI_CTAR_SLAVE_FMSZ_S 27
#define FREESCALE_DSPI_CTAR_SLAVE_FMSZ(__val) \
VALUE_(FREESCALE_DSPI_CTAR_SLAVE_FMSZ_S, __val)
// SR Bit Fields
#define FREESCALE_DSPI_SR_POPNXTPTR_M 0xF
#define FREESCALE_DSPI_SR_POPNXTPTR_S 0
#define FREESCALE_DSPI_SR_POPNXTPTR(__val) \
VALUE_(FREESCALE_DSPI_SR_POPNXTPTR_S, __val)
#define FREESCALE_DSPI_SR_RXCTR_M 0xF0
#define FREESCALE_DSPI_SR_RXCTR_S 4
#define FREESCALE_DSPI_SR_RXCTR(__val) \
VALUE_(FREESCALE_DSPI_SR_RXCTR_S, __val)
#define FREESCALE_DSPI_SR_TXNXTPTR_M 0xF00
#define FREESCALE_DSPI_SR_TXNXTPTR_S 8
#define FREESCALE_DSPI_SR_TXNXTPTR(__val) \
VALUE_(FREESCALE_DSPI_SR_TXNXTPTR_S, __val)
#define FREESCALE_DSPI_SR_TXCTR_M 0xF000
#define FREESCALE_DSPI_SR_TXCTR_S 12
#define FREESCALE_DSPI_SR_TXCTR(__val) \
VALUE_(FREESCALE_DSPI_SR_TXCTR_S, __val)
#define FREESCALE_DSPI_SR_RFDF_M 0x20000
#define FREESCALE_DSPI_SR_RFDF_S 17
#define FREESCALE_DSPI_SR_RFOF_M 0x80000
#define FREESCALE_DSPI_SR_RFOF_S 19
#define FREESCALE_DSPI_SR_TFFF_M 0x2000000
#define FREESCALE_DSPI_SR_TFFF_S 25
#define FREESCALE_DSPI_SR_TFUF_M 0x8000000
#define FREESCALE_DSPI_SR_TFUF_S 27
#define FREESCALE_DSPI_SR_EOQF_M 0x10000000
#define FREESCALE_DSPI_SR_EOQF_S 28
#define FREESCALE_DSPI_SR_TXRXS_M 0x40000000
#define FREESCALE_DSPI_SR_TXRXS_S 30
#define FREESCALE_DSPI_SR_TCF_M 0x80000000
#define FREESCALE_DSPI_SR_TCF_S 31
#define FREESCALE_DSPI_CLEAR_FIFOS (FREESCALE_DSPI_SR_TFUF_M |\
FREESCALE_DSPI_SR_RFOF_M)
// RSER Bit Fields
#define FREESCALE_DSPI_RSER_RFDF_DIRS_M 0x10000
#define FREESCALE_DSPI_RSER_RFDF_DIRS_S 16
#define FREESCALE_DSPI_RSER_RFDF_RE_M 0x20000
#define FREESCALE_DSPI_RSER_RFDF_RE_S 17
#define FREESCALE_DSPI_RSER_RFOF_RE_M 0x80000
#define FREESCALE_DSPI_RSER_RFOF_RE_S 19
#define FREESCALE_DSPI_RSER_TFFF_DIRS_M 0x1000000
#define FREESCALE_DSPI_RSER_TFFF_DIRS_S 24
#define FREESCALE_DSPI_RSER_TFFF_RE_M 0x2000000
#define FREESCALE_DSPI_RSER_TFFF_RE_S 25
#define FREESCALE_DSPI_RSER_TFUF_RE_M 0x8000000
#define FREESCALE_DSPI_RSER_TFUF_RE_S 27
#define FREESCALE_DSPI_RSER_EOQF_RE_M 0x10000000
#define FREESCALE_DSPI_RSER_EOQF_RE_S 28
#define FREESCALE_DSPI_RSER_TCF_RE_M 0x80000000
#define FREESCALE_DSPI_RSER_TCF_RE_S 31
// PUSHR Bit Fields
#define FREESCALE_DSPI_PUSHR_TXDATA_M 0xFFFF
#define FREESCALE_DSPI_PUSHR_TXDATA_S 0
#define FREESCALE_DSPI_PUSHR_TXDATA(__val) \
VALUE_(FREESCALE_DSPI_PUSHR_TXDATA_S, __val)
#define FREESCALE_DSPI_PUSHR_PCS_M 0x3F0000
#define FREESCALE_DSPI_PUSHR_PCS_S 16
#define FREESCALE_DSPI_PUSHR_PCS(__val) VALUE_(FREESCALE_DSPI_PUSHR_PCS_S, __val)
#define FREESCALE_DSPI_PUSHR_CTCNT_M 0x4000000
#define FREESCALE_DSPI_PUSHR_CTCNT_S 26
#define FREESCALE_DSPI_PUSHR_EOQ_M 0x8000000
#define FREESCALE_DSPI_PUSHR_EOQ_S 27
#define FREESCALE_DSPI_PUSHR_CTAS_M 0x70000000
#define FREESCALE_DSPI_PUSHR_CTAS_S 28
#define FREESCALE_DSPI_PUSHR_CTAS(__val) \
VALUE_(FREESCALE_DSPI_PUSHR_CTAS_S, __val)
#define FREESCALE_DSPI_PUSHR_CONT_M 0x80000000
#define FREESCALE_DSPI_PUSHR_CONT_S 31
// PUSHR_SLAVE Bit Fields
#define FREESCALE_DSPI_PUSHR_SLAVE_TXDATA_M 0xFFFFFFFF
#define FREESCALE_DSPI_PUSHR_SLAVE_TXDATA_S 0
#define FREESCALE_DSPI_PUSHR_SLAVE_TXDATA(__val) \
VALUE_(FREESCALE_DSPI_PUSHR_SLAVE_TXDATA_S, __val)
#define FREESCALE_DSPI_PUSHR_PCS_CLEAR(__val)\
CYG_MACRO_START\
__val &= ~FREESCALE_DSPI_PUSHR_PCS_M; \
CYG_MACRO_END
// POPR Bit Fields
#define FREESCALE_DSPI_POPR_RXDATA_M 0xFFFFFFFF
#define FREESCALE_DSPI_POPR_RXDATA_S 0
#define FREESCALE_DSPI_POPR_RXDATA(__val) \
VALUE_(FREESCALE_DSPI_POPR_RXDATA_S, __val)
// TXFR Bit Fields
#define FREESCALE_DSPI_TXFR_TXDATA_M 0xFFFF
#define FREESCALE_DSPI_TXFR_TXDATA_S 0
#define FREESCALE_DSPI_TXFR_TXCMD_TXDATA_M 0xFFFF0000
#define FREESCALE_DSPI_TXFR_TXCMD_TXDATA_S 16
#define FREESCALE_DSPI_TXFR_TXCMD_TXDATA(__fr,__val) \
VALUE_(FREESCALE_DSPI_TXFR##__fr##_TXCMD_TXDATA_S, __val)
// RXFR Bit Fields
#define FREESCALE_DSPI_RXFR_RXDATA_M 0xFFFFFFFF
#define FREESCALE_DSPI_RXFR_RXDATA_S 0
#define FREESCALE_DSPI_RXFR_RXDATA(__fr,__val) \
VALUE_(FREESCALE_DSPI_RXFR##_fr##_RXDATA_S, __val)
// Borrow following macros from HAL
// CYGADDR_IO_SPI_FREESCALE_DSPIx_P
// CYGHWR_IO_CLOCK_ENABLE(__clkgate)
// CYGHWR_IO_FREESCALE_DSPIx_CLK
// CYGHWR_IO_FREESCALE_DSPI_PIN(__pin)
// CYGHWR_IO_FREESCALE_SPIx_PIN_SIN
// CYGHWR_IO_FREESCALE_SPIx_PIN_SOUT
// CYGHWR_IO_FREESCALE_SPIx_PIN_SCK
// CYGHWR_IO_FREESCALE_SPIx_PIN_CSn
//=============================================================================
#endif // CYGONCE_DEVS_SPI_FREESCALE_DSPI_IO_H
|