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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [misc/] [freescale/] [edma/] [current/] [include/] [freescale_edma.h] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_FREESCALE_EDMA_H
2
#define CYGONCE_FREESCALE_EDMA_H
3
//===========================================================================
4
//
5
//      freescale_edma.h
6
//
7
//      Freescale eDMA specific registers
8
//
9
//===========================================================================
10
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
11
// -------------------------------------------                              
12
// This file is part of eCos, the Embedded Configurable Operating System.   
13
// Copyright (C) 2011 Free Software Foundation, Inc.                        
14
//
15
// eCos is free software; you can redistribute it and/or modify it under    
16
// the terms of the GNU General Public License as published by the Free     
17
// Software Foundation; either version 2 or (at your option) any later      
18
// version.                                                                 
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT      
21
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
23
// for more details.                                                        
24
//
25
// You should have received a copy of the GNU General Public License        
26
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
27
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
28
//
29
// As a special exception, if other files instantiate templates or use      
30
// macros or inline functions from this file, or you compile this file      
31
// and link it with other works to produce a work based on this file,       
32
// this file does not by itself cause the resulting work to be covered by   
33
// the GNU General Public License. However the source code for this file    
34
// must still be made available in accordance with section (3) of the GNU   
35
// General Public License v2.                                               
36
//
37
// This exception does not invalidate any other reasons why a work based    
38
// on this file might be covered by the GNU General Public License.         
39
// -------------------------------------------                              
40
// ####ECOSGPLCOPYRIGHTEND####                                              
41
//===========================================================================
42
//#####DESCRIPTIONBEGIN####
43
//
44
// Author(s):     Ilija Kocho <ilijak@siva.com.mk>
45
// Date:          2011-11-04
46
// Purpose:       Freescale eDMA specific registers
47
// Description:
48
// Usage:         #include <cyg/hal/freescale_edma.h>
49
//
50
//####DESCRIPTIONEND####
51
//
52
//===========================================================================
53
 
54
// ----------------------------------------------------------------------------
55
// DMAMUX DMA Multiplexer
56
 
57
// DMAMUX - Peripheral register structure
58
typedef volatile struct cyghwr_hal_freescale_dmamux_s {
59
    cyg_uint8 chcfg[CYGNUM_HAL_FREESCALE_EDMA_CHAN_NUM];   // Channel Configuration Register
60
} cyghwr_hal_freescale_dmamux_t;
61
 
62
// DMAMUX - Peripheral instance base addresses
63
#define CYGHWR_HAL_FREESCALE_DMAMUX0_P ((cyghwr_hal_freescale_dmamux_t *) 0x40021000)
64
 
65
// ----------------------------------------------------------------------------
66
// DMAMUX Register Masks
67
 
68
// CHCFG Bit Fields
69
#define FREESCALE_DMAMUX_CHCFG_SOURCE_M      0x3F
70
#define FREESCALE_DMAMUX_CHCFG_SOURCE(__val) \
71
            (__val & FREESCALE_DMAMUX_CHCFG_SOURCE_M)
72
#define FREESCALE_DMAMUX_CHCFG_TRIG_M        0x40
73
#define FREESCALE_DMAMUX_CHCFG_TRIG_S        6
74
#define FREESCALE_DMAMUX_CHCFG_ENBL_M        0x80
75
#define FREESCALE_DMAMUX_CHCFG_ENBL_S        7
76
#define FREESCALE_DMAMUX_CHCFG_ASIS          FREESCALE_DMAMUX_CHCFG_ENBL_M
77
 
78
// DMAMUX DMA request sources
79
// Provided by HAL (var_io_devs.h)
80
#define FREESCALE_DMAMUX_SRC(__src) (_src)
81
 
82
//---------------------------------------------------------------------------
83
// eDMA
84
 
85
// Indices for cyghwr_hal_freescale_edma_t::dchpri[]
86
enum {
87
    FREESCALE_DMA_PRI_CH3,  FREESCALE_DMA_PRI_CH2,
88
    FREESCALE_DMA_PRI_CH1,  FREESCALE_DMA_PRI_CH0,
89
    FREESCALE_DMA_PRI_CH7,  FREESCALE_DMA_PRI_CH6,
90
    FREESCALE_DMA_PRI_CH5,  FREESCALE_DMA_PRI_CH4,
91
    FREESCALE_DMA_PRI_CH11, FREESCALE_DMA_PRI_CH10,
92
    FREESCALE_DMA_PRI_CH9,  FREESCALE_DMA_PRI_CH8,
93
    FREESCALE_DMA_PRI_CH15, FREESCALE_DMA_PRI_CH14,
94
    FREESCALE_DMA_PRI_CH13, FREESCALE_DMA_PRI_CH12
95
};
96
 
97
// Transfer control descriptor
98
typedef volatile struct cyghwr_hal_freescale_edma_tcd_s
99
                           cyghwr_hal_freescale_edma_tcd_t;
100
#define CYGBLD_FREESCALE_EDMA_TCD_ALIGN CYGBLD_ATTRIB_ALIGN(32)
101
struct cyghwr_hal_freescale_edma_tcd_s {
102
    volatile void* saddr;             //  Source Address
103
    cyg_uint16 soff;         //  Signed Source Address Offset
104
    cyg_uint16 attr;         //  Transfer Attributes
105
    union {
106
        cyg_uint32 mlno;     //  Minor Byte Count (Minor Loop Dis)
107
        //  Signed Minor Loop Off:
108
        cyg_uint32 mloffyes; //    MinoL Eena and Off Dis
109
        cyg_uint32 mloffno;  //    Minor Loop and Off Ena
110
    } nbytes;
111
    cyg_uint32 slast;         //  Last Source Address Adjustment
112
    volatile void *daddr;              //  Destination Address
113
    cyg_uint16 doff;          //  Signed Destination Address Offset
114
    union {                   //  Current Minor Loop Link:
115
        cyg_uint16 elinkyes;  //  Major Loop Count (Ch Lnkng Ena)
116
        cyg_uint16 elinkno;   //  Major Loop Count (Ch Lnkng Dis)
117
    } citer;
118
    union {
119
        cyg_uint32 dlast;     //  Last Dst Addr Adj/Scat Gath Addr
120
        cyghwr_hal_freescale_edma_tcd_t *sga;  //  Last Dst Addr Adj/Scat Gath Addr
121
    };
122
    cyg_uint16 csr;           //  Control and Status
123
    union {                   //  Beginning Minor Loop Link:
124
        cyg_uint16 elinkno;   //  Major Loop Cnt (Ch Lnkng Dis)
125
        cyg_uint16 elinkyes;  //  Major Loop Cnt (Ch Lnkng Ena)
126
    } biter;
127
};
128
 
129
// DMA - Peripheral register structure
130
typedef volatile struct cyghwr_hal_freescale_edma_s {
131
    cyg_uint32 cr;                   // Control Register
132
    cyg_uint32 es;                   // Error Status Register
133
    cyg_uint32 reserved_0;
134
    cyg_uint32 erq;                  // Enable Request Register
135
    cyg_uint32 reserved_1;
136
    cyg_uint32 eei;                  // Enable Error Interrupt Register
137
    cyg_uint8  ceei;                 // Clear Enable Error Interrupt Register
138
    cyg_uint8  seei;                 // Set Enable Error Interrupt Register
139
    cyg_uint8  cerq;                 // Clear Enable Request Register
140
    cyg_uint8  serq;                 // Set Enable Request Register
141
    cyg_uint8  cdne;                 // Clear DONE Status Bit Register
142
    cyg_uint8  ssrt;                 // Set START Bit Register
143
    cyg_uint8  cerr;                 // Clear Error Register
144
    cyg_uint8  cint;                 // Clear Interrupt Request Register
145
    cyg_uint32 reserved_2;
146
    cyg_uint32 irq;                  // Interrupt Request Register
147
    cyg_uint32 reserved_3;
148
    cyg_uint32 err;                  // Error Register
149
    cyg_uint32 reserved_4;
150
    cyg_uint32 hrs;                  // Hardware Request Status Register
151
    cyg_uint8  reserved_5[0x8100 - (0x8034 + 4)];
152
    cyg_uint8  dchpri[CYGNUM_HAL_FREESCALE_EDMA_CHAN_NUM]; // Priorities
153
    cyg_uint8  reserved_6[0x9000 - 0x8100 - CYGNUM_HAL_FREESCALE_EDMA_CHAN_NUM];
154
    cyghwr_hal_freescale_edma_tcd_t
155
          tcd[CYGNUM_HAL_FREESCALE_EDMA_CHAN_NUM]; // Transfer control descriptors
156
} cyghwr_hal_freescale_edma_t;
157
 
158
#define CYGHWR_HAL_FREESCALE_EDMA0_P  ((cyghwr_hal_freescale_edma_t *)0x40008000)
159
 
160
// ----------------------------------------------------------------------------
161
//  DMA Register Bits
162
 
163
// CR Bit Fields
164
#define FREESCALE_EDMA_CR_EDBG_M                        0x2
165
#define FREESCALE_EDMA_CR_EDBG_S                        1
166
#define FREESCALE_EDMA_CR_ERCA_M                        0x4
167
#define FREESCALE_EDMA_CR_ERCA_S                        2
168
#define FREESCALE_EDMA_CR_HOE_M                         0x10
169
#define FREESCALE_EDMA_CR_HOE_S                         4
170
#define FREESCALE_EDMA_CR_HALT_M                        0x20
171
#define FREESCALE_EDMA_CR_HALT_S                        5
172
#define FREESCALE_EDMA_CR_CLM_M                         0x40
173
#define FREESCALE_EDMA_CR_CLM_S                         6
174
#define FREESCALE_EDMA_CR_EMLM_M                        0x80
175
#define FREESCALE_EDMA_CR_EMLM_S                        7
176
#define FREESCALE_EDMA_CR_ECX_M                         0x10000
177
#define FREESCALE_EDMA_CR_ECX_S                         16
178
#define FREESCALE_EDMA_CR_CX_M                          0x20000
179
#define FREESCALE_EDMA_CR_CX_S                          17
180
// ES Bit Fields
181
#define FREESCALE_EDMA_ES_DBE_M                         0x1
182
#define FREESCALE_EDMA_ES_DBE_S                         0
183
#define FREESCALE_EDMA_ES_SBE_M                         0x2
184
#define FREESCALE_EDMA_ES_SBE_S                         1
185
#define FREESCALE_EDMA_ES_SGE_M                         0x4
186
#define FREESCALE_EDMA_ES_SGE_S                         2
187
#define FREESCALE_EDMA_ES_NCE_M                         0x8
188
#define FREESCALE_EDMA_ES_NCE_S                         3
189
#define FREESCALE_EDMA_ES_DOE_M                         0x10
190
#define FREESCALE_EDMA_ES_DOE_S                         4
191
#define FREESCALE_EDMA_ES_DAE_M                         0x20
192
#define FREESCALE_EDMA_ES_DAE_S                         5
193
#define FREESCALE_EDMA_ES_SOE_M                         0x40
194
#define FREESCALE_EDMA_ES_SOE_S                         6
195
#define FREESCALE_EDMA_ES_SAE_M                         0x80
196
#define FREESCALE_EDMA_ES_SAE_S                         7
197
#define FREESCALE_EDMA_ES_ERRCHN_M                      0xF00
198
#define FREESCALE_EDMA_ES_ERRCHN_S                      8
199
#define FREESCALE_EDMA_ES_ERRCHN(__val)                 \
200
            VALUE_(FREESCALE_EDMA_ES_ERRCHN_S, __val)
201
#define FREESCALE_EDMA_ES_CPE_M                         0x4000
202
#define FREESCALE_EDMA_ES_CPE_S                         14
203
#define FREESCALE_EDMA_ES_ECX_M                         0x10000
204
#define FREESCALE_EDMA_ES_ECX_S                         16
205
#define FREESCALE_EDMA_ES_VLD_M                         0x80000000
206
#define FREESCALE_EDMA_ES_VLD_S                         31
207
// ERQ Bit Fields
208
#define FREESCALE_EDMA_ERQ(__rq)                        BIT(__rq)
209
// EEI Bit Fields
210
#define FREESCALE_EDMA_EEI(__rq)                        BIT(__rq)
211
#define FREESCALE_EDMA_CHAN_M                           0x0F
212
// CEEI Bit Fields
213
#define FREESCALE_EDMA_CEEI_CEEI(__val) (__val & FREESCALE_EDMA_CHAN_M)
214
#define FREESCALE_EDMA_CEEI_CAEE_M                      0x40
215
#define FREESCALE_EDMA_CEEI_CAEE_S                      6
216
#define FREESCALE_EDMA_CEEI_NOP_M                       0x80
217
#define FREESCALE_EDMA_CEEI_NOP_S                       7
218
// SEEI Bit Fields
219
#define FREESCALE_EDMA_SEEI_SEEI_M                      0xF
220
#define FREESCALE_EDMA_SEEI_SEEI(__val) (__val & FREESCALE_EDMA_CHAN_M)
221
#define FREESCALE_EDMA_SEEI_SAEE_M                      0x40
222
#define FREESCALE_EDMA_SEEI_SAEE_S                      6
223
#define FREESCALE_EDMA_SEEI_NOP_M                       0x80
224
#define FREESCALE_EDMA_SEEI_NOP_S                       7
225
// CERQ Bit Fields
226
#define FREESCALE_EDMA_CERQ_CERQ(__val) (__val & FREESCALE_EDMA_CHAN_M)
227
#define FREESCALE_EDMA_CERQ_CAER_M                      0x40
228
#define FREESCALE_EDMA_CERQ_CAER_S                      6
229
#define FREESCALE_EDMA_CERQ_NOP_M                       0x80
230
#define FREESCALE_EDMA_CERQ_NOP_S                       7
231
// SERQ Bit Fields
232
#define FREESCALE_EDMA_SERQ_SERQ(__val) (__val & FREESCALE_EDMA_CHAN_M)
233
#define FREESCALE_EDMA_SERQ_SAER_M                      0x40
234
#define FREESCALE_EDMA_SERQ_SAER_S                      6
235
#define FREESCALE_EDMA_SERQ_NOP_M                       0x80
236
#define FREESCALE_EDMA_SERQ_NOP_S                       7
237
// CDNE Bit Fields
238
#define FREESCALE_EDMA_CDNE_CDNE(__val) (__val & FREESCALE_EDMA_CHAN_M)
239
#define FREESCALE_EDMA_CDNE_CADN_M                      0x40
240
#define FREESCALE_EDMA_CDNE_CADN_S                      6
241
#define FREESCALE_EDMA_CDNE_NOP_M                       0x80
242
#define FREESCALE_EDMA_CDNE_NOP_S                       7
243
// SSRT Bit Fields
244
#define FREESCALE_EDMA_SSRT_SSRT(__val) (__val & FREESCALE_EDMA_CHAN_M)
245
#define FREESCALE_EDMA_SSRT_SAST_M                      0x40
246
#define FREESCALE_EDMA_SSRT_SAST_S                      6
247
#define FREESCALE_EDMA_SSRT_NOP_M                       0x80
248
#define FREESCALE_EDMA_SSRT_NOP_S                       7
249
// CERR Bit Fields
250
#define FREESCALE_EDMA_CERR_CERR(__val) (__val & FREESCALE_EDMA_CHAN_M)
251
#define FREESCALE_EDMA_CERR_CAEI_M                      0x40
252
#define FREESCALE_EDMA_CERR_CAEI_S                      6
253
#define FREESCALE_EDMA_CERR_NOP_M                       0x80
254
#define FREESCALE_EDMA_CERR_NOP_S                       7
255
// CINT Bit Fields
256
#define FREESCALE_EDMA_CINT_CINT(__val) (__val & FREESCALE_EDMA_CHAN_M)
257
#define FREESCALE_EDMA_CINT_CAIR_M                      0x40
258
#define FREESCALE_EDMA_CINT_CAIR_S                      6
259
#define FREESCALE_EDMA_CINT_NOP_M                       0x80
260
#define FREESCALE_EDMA_CINT_NOP_S                       7
261
// INT Bit Fields
262
#define FREESCALE_EDMA_INT(__ch)                        BIT(__ch)
263
// ERR Bit Fields
264
#define FREESCALE_EDMA_ERR(__ch)                        BIT(__ch)
265
// HRS Bit Fields
266
#define FREESCALE_EDMA_HRS(__ch)                        BIT(__ch)
267
// DCHPRI Bit Fields
268
#define FREESCALE_EDMA_DCHPRI_CHPRI_M                   0xF
269
#define FREESCALE_EDMA_DCHPRI_CHPRI(__val)              \
270
        (__val & FREESCALE_EDMA_DCHPRI_CHPRI_M)
271
#define FREESCALE_EDMA_DCHPRI_DPA_M                     0x40
272
#define FREESCALE_EDMA_DCHPRI_DPA_S                     6
273
#define FREESCALE_EDMA_DCHPRI_ECP_M                     0x80
274
#define FREESCALE_EDMA_DCHPRI_ECP_S                     7
275
#define FREESCALE_EDMA_DCHPRI_ASIS                      0x20
276
// SOFF Bit Fields
277
#define FREESCALE_EDMA_SOFF_SOFF_M                      0xFFFF
278
#define FREESCALE_EDMA_SOFF_SOFF(__val)                 \
279
        (__val & FREESCALE_EDMA_SOFF_SOFF_M)
280
// ATTR Bit Fields
281
#define FREESCALE_EDMA_ATTR_DSIZE_M                     0x7
282
#define FREESCALE_EDMA_ATTR_DSIZE(__val)                \
283
        (__val & FREESCALE_EDMA_ATTR_DSIZE_M)
284
#define FREESCALE_EDMA_ATTR_DMOD_M                      0xF8
285
#define FREESCALE_EDMA_ATTR_DMOD_S                      3
286
#define FREESCALE_EDMA_ATTR_DMOD(__val)                 \
287
        VALUE_(FREESCALE_EDMA_ATTR_DMOD_S, __val)
288
#define FREESCALE_EDMA_ATTR_SSIZE_M                     0x700
289
#define FREESCALE_EDMA_ATTR_SSIZE_S                     8
290
#define FREESCALE_EDMA_ATTR_SSIZE(__val)                \
291
        VALUE_(FREESCALE_EDMA_ATTR_SSIZE_S, __val)
292
#define FREESCALE_EDMA_ATTR_SMOD_M                      0xF800
293
#define FREESCALE_EDMA_ATTR_SMOD_S                      11
294
#define FREESCALE_EDMA_ATTR_SMOD(__val)                 \
295
        VALUE_(FREESCALE_EDMA_ATTR_SMOD_S, __val)
296
#define FREESCALE_EDMA_ATTR_SIZE_8       0
297
#define FREESCALE_EDMA_ATTR_SIZE_16      1
298
#define FREESCALE_EDMA_ATTR_SIZE_32      2
299
#define FREESCALE_EDMA_ATTR_SIZE_16B     4
300
// NBYTES_MLOFFNO Bit Fields
301
#define FREESCALE_EDMA_NBYTES_MLOFFNO_NBYTES_M          0x3FFFFFFF
302
#define FREESCALE_EDMA_NBYTES_MLOFFNO_NBYTES(__val)     \
303
        (__val & FREESCALE_EDMA_NBYTES_MLOFFNO_NBYTES_M)
304
#define FREESCALE_EDMA_NBYTES_MLOFFNO_DMLOE_M           0x40000000
305
#define FREESCALE_EDMA_NBYTES_MLOFFNO_DMLOE_S           30
306
#define FREESCALE_EDMA_NBYTES_MLOFFNO_SMLOE_M           0x80000000
307
#define FREESCALE_EDMA_NBYTES_MLOFFNO_SMLOE_S           31
308
// NBYTES_MLOFFYES Bit Fields
309
#define FREESCALE_EDMA_NBYTES_MLOFFYES_NBYTES_M         0x3FF
310
#define FREESCALE_EDMA_NBYTES_MLOFFYES_NBYTES(__val)    \
311
        (__val & FREESCALE_EDMA_NBYTES_MLOFFYES_NBYTES(__val))
312
#define FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF_M          0x3FFFFC00
313
#define FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF_S          10
314
#define FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF(__val)     \
315
        VALUE_(FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF_S, __val)
316
#define FREESCALE_EDMA_NBYTES_MLOFFYES_DMLOE_M          0x40000000
317
#define FREESCALE_EDMA_NBYTES_MLOFFYES_DMLOE_S          30
318
#define FREESCALE_EDMA_NBYTES_MLOFFYES_SMLOE_M          0x80000000
319
#define FREESCALE_EDMA_NBYTES_MLOFFYES_SMLOE_S          31
320
// DOFF Bit Fields
321
#define FREESCALE_EDMA_DOFF_DOFF_M                      0xFFFF
322
#define FREESCALE_EDMA_DOFF_DOFF(__val) (__val & FREESCALE_EDMA_DOFF_DOFF_M)
323
// CITER_ELINKYES Bit Fields
324
#define FREESCALE_EDMA_CITER_ELINKYES_CITER_M           0x1FF
325
#define FREESCALE_EDMA_CITER_ELINKYES_CITER(__val)      \
326
            (__val & FREESCALE_EDMA_CITER_ELINKYES_CITER_M)
327
#define FREESCALE_EDMA_CITER_ELINKYES_LINKCH_M          0x1E00
328
#define FREESCALE_EDMA_CITER_ELINKYES_LINKCH_S          9
329
#define FREESCALE_EDMA_CITER_ELINKYES_LINKCH(__val)     \
330
            VALUE_(FREESCALE_EDMA_CITER_ELINKYES_LINKCH_S, __val)
331
#define FREESCALE_EDMA_CITER_ELINKYES_ELINK_M           0x8000
332
#define FREESCALE_EDMA_CITER_ELINKYES_ELINK_S           15
333
// CITER_ELINKNO Bit Fields
334
#define FREESCALE_EDMA_CITER_ELINKNO_CITER_M            0x7FFF
335
#define FREESCALE_EDMA_CITER_ELINKNO_CITER(__val)       \
336
            (__val & FREESCALE_EDMA_CITER_ELINKNO_CITER_M)
337
#define FREESCALE_EDMA_CITER_ELINKNO_ELINK_M            0x8000
338
#define FREESCALE_EDMA_CITER_ELINKNO_ELINK_S            15
339
// CSR Bit Fields
340
#define FREESCALE_EDMA_CSR_START_M                      0x1
341
#define FREESCALE_EDMA_CSR_START_S                      0
342
#define FREESCALE_EDMA_CSR_INTMAJOR_M                   0x2
343
#define FREESCALE_EDMA_CSR_INTMAJOR_S                   1
344
#define FREESCALE_EDMA_CSR_INTHALF_M                    0x4
345
#define FREESCALE_EDMA_CSR_INTHALF_S                    2
346
#define FREESCALE_EDMA_CSR_DREQ_M                       0x8
347
#define FREESCALE_EDMA_CSR_DREQ_S                       3
348
#define FREESCALE_EDMA_CSR_ESG_M                        0x10
349
#define FREESCALE_EDMA_CSR_ESG_S                        4
350
#define FREESCALE_EDMA_CSR_MAJORELINK_M                 0x20
351
#define FREESCALE_EDMA_CSR_MAJORELINK_S                 5
352
#define FREESCALE_EDMA_CSR_ACTIVE_M                     0x40
353
#define FREESCALE_EDMA_CSR_ACTIVE_S                     6
354
#define FREESCALE_EDMA_CSR_DONE_M                       0x80
355
#define FREESCALE_EDMA_CSR_DONE_S                       7
356
#define FREESCALE_EDMA_CSR_MAJORLINKCH_M                0xF00
357
#define FREESCALE_EDMA_CSR_MAJORLINKCH_S                8
358
#define FREESCALE_EDMA_CSR_MAJORLINKCH(__val)           \
359
            VALUE_(FREESCALE_EDMA_CSR_MAJORLINKCH_S, __val)
360
#define FREESCALE_EDMA_CSR_BWC_M                        0xC000
361
#define FREESCALE_EDMA_CSR_BWC_S                        14
362
#define FREESCALE_EDMA_CSR_BWC(__val)                   \
363
        VALUE_(FREESCALE_EDMA_CSR_BWC_S, __val)
364
#define FREESCALE_EDMA_CSR_BWC_0      0
365
#define FREESCALE_EDMA_CSR_BWC_MEDIUM FREESCALE_EDMA_CSR_BWC(2)
366
#define FREESCALE_EDMA_CSR_BWC_NICE   FREESCALE_EDMA_CSR_BWC(3)
367
 
368
// BITER_ELINKNO Bit Fields
369
#define FREESCALE_EDMA_BITER_ELINKNO_BITER_M            0x7FFF
370
#define FREESCALE_EDMA_BITER_ELINKNO_BITER(__val)       \
371
            (__val FREESCALE_EDMA_BITER_ELINKNO_BITER_M)
372
#define FREESCALE_EDMA_BITER_ELINKNO_ELINK_M            0x8000
373
#define FREESCALE_EDMA_BITER_ELINKNO_ELINK_S            15
374
// BITER_ELINKYES Bit Fields
375
#define FREESCALE_EDMA_BITER_ELINKYES_BITER_M           0x1FF
376
#define FREESCALE_EDMA_BITER_ELINKYES_BITER(__val)      \
377
            (__val & FREESCALE_EDMA_BITER_ELINKYES_BITER_M)
378
#define FREESCALE_EDMA_BITER_ELINKYES_LINKCH_M          0x1E00
379
#define FREESCALE_EDMA_BITER_ELINKYES_LINKCH_S          9
380
#define FREESCALE_EDMA_BITER_ELINKYES_LINKCH(__val)     \
381
            VALUE_(FREESCALE_EDMA_BITER_ELINKYES_LINKCH_S, __val)
382
#define FREESCALE_EDMA_BITER_ELINKYES_ELINK_M           0x8000
383
#define FREESCALE_EDMA_BITER_ELINKYES_ELINK_S           15
384
 
385
//-----------------------------------------------------------------------------
386
 
387
// DMA Channel data
388
typedef struct cyghwr_hal_freescale_dma_chan_set_s {
389
    cyg_uint8 dma_src;      // Data source
390
    cyg_uint8 dma_chan_i;   // Channel index
391
    cyg_uint8 dma_prio;     // DMA channel priority
392
    cyg_uint8 isr_prio;     // Interrupt priority
393
    cyg_uint8 isr_num;      // Interrupt vector
394
    cyg_uint8 isr_ena;      // Interruot enable
395
} cyghwr_hal_freescale_dma_chan_set_t;
396
 
397
// DMA Channel set
398
typedef struct cyghwr_hal_freescale_dma_set_s {
399
    cyghwr_hal_freescale_edma_t *edma_p;
400
    cyghwr_hal_freescale_dmamux_t *dmamux_p;
401
    const cyghwr_hal_freescale_dma_chan_set_t *chan_p;
402
    cyg_uint8 chan_n;
403
} cyghwr_hal_freescale_dma_set_t;
404
 
405
 
406
__externC void
407
hal_freescale_edma_init_chanset(cyghwr_hal_freescale_dma_set_t *inidat_p);
408
 
409
__externC void
410
hal_freescale_edma_diag(cyghwr_hal_freescale_dma_set_t *inidat_p, cyg_uint32 mask);
411
 
412
__externC void
413
hal_freescale_edma_transfer_init(cyghwr_hal_freescale_edma_t *edma_p,
414
                                 cyg_uint8 chan_i,
415
                                 const cyghwr_hal_freescale_edma_tcd_t *tcd_cfg_p);
416
__externC void
417
hal_freescale_edma_tcd_diag(cyghwr_hal_freescale_edma_tcd_t *tcd_p, cyg_int32 chan_i, const char *prefix);
418
 
419
__externC void
420
hal_freescale_edma_transfer_diag (cyghwr_hal_freescale_edma_t *edma_p,
421
                                  cyg_uint8 chan_i, cyg_bool recurse);
422
 
423
__externC inline void
424
hal_freescale_edma_erq_enable(cyghwr_hal_freescale_edma_t *edma_p,
425
                              cyg_uint8 chan_i)
426
{
427
    edma_p->serq = chan_i;
428
}
429
 
430
__externC inline void
431
hal_freescale_edma_erq_disable(cyghwr_hal_freescale_edma_t *edma_p,
432
                               cyg_uint8 chan_i)
433
{
434
    edma_p->cerq = chan_i;
435
}
436
 
437
__externC inline void
438
hal_freescale_edma_cleardone(cyghwr_hal_freescale_edma_t *edma_p,
439
                              cyg_uint8 chan_i)
440
{
441
    edma_p->cdne = chan_i;
442
}
443
 
444
__externC inline void
445
hal_freescale_edma_irq_enable(cyghwr_hal_freescale_edma_t *edma_p,
446
                              cyg_uint8 chan_i)
447
{
448
    edma_p->seei = chan_i;
449
}
450
 
451
__externC inline void
452
hal_freescale_edma_irq_disable(cyghwr_hal_freescale_edma_t *edma_p,
453
                               cyg_uint8 chan_i)
454
{
455
    edma_p->ceei = chan_i;
456
}
457
 
458
__externC inline void
459
hal_freescale_edma_irq_clear(cyghwr_hal_freescale_edma_t *edma_p,
460
                               cyg_uint8 chan_i)
461
{
462
    edma_p->cint = chan_i;
463
}
464
 
465
__externC inline void
466
hal_freescale_edma_transfer_clear(cyghwr_hal_freescale_edma_t *edma_p,
467
                                  cyg_uint8 chan_i)
468
{
469
    edma_p->tcd[chan_i].csr &= ~FREESCALE_EDMA_CSR_DONE_M;
470
}
471
 
472
__externC inline void
473
hal_freescale_edma_transfer_start(cyghwr_hal_freescale_edma_t *edma_p,
474
                                  cyg_uint8 chan_i)
475
{
476
    edma_p->ssrt = chan_i;
477
}
478
 
479
#define HAL_DMA_TRANSFER_STOP(__edma,__chan)   \
480
        hal_freescale_edma_erq_disable(__edma, __chan)
481
#define HAL_DMA_TRANSFER_START(__edma,__chan)  \
482
        hal_freescale_edma_erq_enable(__edma, __chan)
483
#define HAL_DMA_TRANSFER_CLEAR(__edma,__chan)  \
484
        hal_freescale_edma_cleardone(__edma, __chan)
485
 
486
// end of var_io_dma.h
487
#endif // CYGONCE_FREESCALE_EDMA_H

powered by: WebSVN 2.1.0

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