00001
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #ifndef _MDMA_H_
00049 #define _MDMA_H_
00050
00051 #include <avr32/io.h>
00052 #include "compiler.h"
00053
00055 #define MDMA_INVALID_ARGUMENT (-1)
00056
00059
00060 #define MDMA_SUCCESS 0
00061 #define MDMA_FAILURE -1
00062
00063
00065 #define MDMA_DEFAULT_TIMEOUT 10000
00066
00067
00070
00071 #define MDMA_TRANSFERT_SIZE_BYTE (0)
00072 #define MDMA_TRANSFERT_SIZE_HLFW (1)
00073 #define MDMA_TRANSFERT_SIZE_WORD (2)
00075
00076
00078
00079 #define MDMA_SINGLE_TRANSFERT_MODE (0)
00080 #define MDMA_DESCRIPTOR_MODE (1)
00082
00083
00085
00086 #define MDMA_FIXED_PRIORITY_MODE (0)
00087 #define MDMA_ROUND_ROBIN_MODE (1)
00089
00090
00092
00093 #define MDMA_SINGLE_TRANSFER_BURST (0)
00094 #define MDMA_4_BEAT_BURST (1)
00095 #define MDMA_8_BEAT_BURST (2)
00096 #define MDMA_16_BEAT_BURST (3)
00098
00100 typedef struct
00101 {
00102 unsigned int :6;
00103
00105 unsigned int bswp :2;
00106
00107 unsigned int :1;
00108
00110 unsigned int L :1;
00111
00113 unsigned int V :1;
00114
00116 unsigned int tc_ienable :1;
00117
00119 unsigned int burst_size :2 ;
00120
00122 unsigned int size :2;
00123
00125 unsigned int count :16;
00126
00127 } mdma_opt_t;
00128
00130 typedef struct
00131 {
00133 U32 src;
00134
00136 U32 dest;
00137
00139 mdma_opt_t ccr;
00140
00142 unsigned int :32;
00143 } mdma_descriptor_t;
00144
00146 typedef struct
00147 {
00148 unsigned int :20;
00150 unsigned int berr3 :1;
00151 unsigned int berr2 :1;
00152 unsigned int berr1 :1;
00153 unsigned int berr0 :1;
00154
00155 unsigned int :4;
00156
00158 unsigned int ch3c :1;
00159 unsigned int ch2c :1;
00160 unsigned int ch1c :1;
00161 unsigned int ch0c :1;
00162
00163 } mdma_interrupt_t;
00164
00172 extern unsigned long mdma_get_interrupt_settings(volatile avr32_mdma_t *mdma);
00173
00179 extern void mdma_configure_interrupts(volatile avr32_mdma_t *mdma, const mdma_interrupt_t *bitfield);
00180
00190 extern void mdma_single_mode_xfert_init(volatile avr32_mdma_t *mdma, U32 channel, const mdma_opt_t *opt, U32* src, U32* dest);
00191
00192
00200 extern void mdma_descriptor_mode_xfert_init(volatile avr32_mdma_t *mdma, U32 channel, U32* start_adress);
00201
00209 extern void mdma_start_single_xfert(volatile avr32_mdma_t *mdma, U32 channels, U8 arbitration);
00210
00218 extern void mdma_start_descriptor_xfert(volatile avr32_mdma_t *mdma, U32 channels, U8 arbitration);
00219
00227 extern int mdma_stop_channels(volatile avr32_mdma_t *mdma, U32 channels);
00228
00237 extern int mdma_channels_is_enable(volatile avr32_mdma_t *mdma, U32 channels);
00238
00239 #endif //_MDMA_H_