TMPM4G(1) Group Peripheral Driver User Manual  V1.0.0.0
txz_mdma.h
Go to the documentation of this file.
1 
13 /*------------------------------------------------------------------------------*/
14 /* Define to prevent recursive inclusion */
15 /*------------------------------------------------------------------------------*/
16 #ifndef __MDMA_H
17 #define __MDMA_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /*------------------------------------------------------------------------------*/
24 /* Includes */
25 /*------------------------------------------------------------------------------*/
26 #include "txz_driver_def.h"
27 
38 /*------------------------------------------------------------------------------*/
39 /* Macro Function */
40 /*------------------------------------------------------------------------------*/
46 /* no define */
47  /* End of group MDMA_Exported_macro */
51 
52 
53 /*------------------------------------------------------------------------------*/
54 /* Macro Definition */
55 /*------------------------------------------------------------------------------*/
66 #define MDMA_CH_NUM ((uint32_t)32) /* End of group DMA_ChannelNum */
70 
76 #define MDMA_DMODE_INC ((uint32_t)0x00000000)
77 #define MDMA_DMODE_DEC ((uint32_t)0x00100000) /* End of group MDMA_DMODE */
81 
82 
88 #define MDMA_UMODE_TRANS_ALL ((uint32_t)0x00000000)
89 #define MDMA_UMODE_TRANS_UNI ((uint32_t)0x00010000) /* End of group MDMA_UMODE */
93 
94 
100 #define MDMA_USIZE_1BYTE ((uint32_t)0x00000000)
101 #define MDMA_USIZE_2BYTE ((uint32_t)0x00000100)
102 #define MDMA_USIZE_4BYTE ((uint32_t)0x00000200)
103 #define MDMA_USIZE_8BYTE ((uint32_t)0x00000300)
104 #define MDMA_USIZE_16BYTE ((uint32_t)0x00000400)
105 #define MDMA_USIZE_32BYTE ((uint32_t)0x00000500) /* End of group MDMA_USIZE */
109 
110 
116 #define MDMA_TTYPE_AREA_AREA ((uint32_t)0x00000000)
117 #define MDMA_TTYPE_FIX_AREA ((uint32_t)0x00000001)
118 #define MDMA_TTYPE_AREA_FIX ((uint32_t)0x00000002)
119 #define MDMA_TTYPE_FIX_FIX ((uint32_t)0x00000003) /* End of group MDMA_UMODE */
123 
129 #define MDMA_INFINITE_DISABLE ((uint32_t)0x00000000)
130 #define MDMA_INFINITE_ENABLE ((uint32_t)0x00000001) /* End of group MDMA_UMODE */
134 
141 #define MDMA_TRANS_SIZE_RANGE_MIN ((uint32_t)0x00000001)
142 #define MDMA_TRANS_SIZE_RANGE_MAX ((uint32_t)0x000FFFFF) /* End of group MDMA_TransferNumRange */
146 
153 #define MDMA_NUM_OF_DESCRIPTOR_RANGE_MIN ((uint32_t)0x00000000)
154 #define MDMA_NUM_OF_DESCRIPTOR_RANGE_MAX ((uint32_t)0x000000FF) /* End of group MDMA_TransferNumRange */
158 
163 #define MDMA_PRIORITY_NORMAL ((uint32_t)0x00000000)
164 #define MDMA_PRIORITY_HIGH ((uint32_t)0x00000001) /* End of group MDMA_Priority */
168 
174 #define MDMA_ERROR_BUS_ERROR ((uint32_t)TXZ_ERROR+0x00000000)
175 #define MDMA_ERROR_DESCRIPTOR_ERROR ((uint32_t)TXZ_ERROR+0x00000001) /* End of group MDMA_Error_Reason */
179 
185 #define MDMA_INTERRUPT_ENABLE ((uint32_t)0x00000001)
186 #define MDMA_INTERRUPT_DISABLE ((uint32_t)0x00000000) /* End of group MDMA_Error_Reason */
190  /* End of group MDMA_Exported_define */
194 
195 
196 /*------------------------------------------------------------------------------*/
197 /* Enumerated Type Definition */
198 /*------------------------------------------------------------------------------*/
204 /* no define */
205  /* End of group MDMA_Exported_define */
209 
210 
211 /*------------------------------------------------------------------------------*/
212 /* Structure Definition */
213 /*------------------------------------------------------------------------------*/
219 /*----------------------------------*/
232 /*----------------------------------*/
233 typedef struct
234 {
235  uint32_t base;
237 
238 
239 /*----------------------------------*/
243 /*----------------------------------*/
244 typedef struct
245 {
246  uint32_t dmode;
247  uint32_t umode;
248  uint32_t usize;
249  uint32_t ttype;
250  uint32_t xfsad;
251  uint32_t xfdad;
252  uint32_t xfsiz;
253  uint32_t dsads;
255 
256 /*----------------------------------*/
260 /*----------------------------------*/
261 typedef struct
262 {
263  uint32_t xftyp;
264  uint32_t xfsad;
265  uint32_t xfdad;
266  uint32_t xfsiz;
267  uint32_t dsads;
268  uint32_t dsnum;
269  uint32_t res1;
270  uint32_t res2;
272 
273 /*----------------------------------*/
277 /*----------------------------------*/
278 typedef struct
279 {
280  uint32_t ch0: 1;
281  uint32_t ch1: 1;
282  uint32_t ch2: 1;
283  uint32_t ch3: 1;
284  uint32_t ch4: 1;
285  uint32_t ch5: 1;
286  uint32_t ch6: 1;
287  uint32_t ch7: 1;
288  uint32_t ch8: 1;
289  uint32_t ch9: 1;
290  uint32_t ch10: 1;
291  uint32_t ch11: 1;
292  uint32_t ch12: 1;
293  uint32_t ch13: 1;
294  uint32_t ch14: 1;
295  uint32_t ch15: 1;
296  uint32_t ch16: 1;
297  uint32_t ch17: 1;
298  uint32_t ch18: 1;
299  uint32_t ch19: 1;
300  uint32_t ch20: 1;
301  uint32_t ch21: 1;
302  uint32_t ch22: 1;
303  uint32_t ch23: 1;
304  uint32_t ch24: 1;
305  uint32_t ch25: 1;
306  uint32_t ch26: 1;
307  uint32_t ch27: 1;
308  uint32_t ch28: 1;
309  uint32_t ch29: 1;
310  uint32_t ch30: 1;
311  uint32_t ch31: 1;
312 } mdma_bit_t;
313 
314 /*----------------------------------*/
318 /*----------------------------------*/
319 typedef union{
321  uint32_t uword;
322 } mdma_ch_bit_t;
323 
324 /*----------------------------------*/
328 /*----------------------------------*/
329 typedef struct
330 {
331  void (*handler)(uint32_t id, TXZ_Result result);
332  uint32_t id;
333  uint32_t priority;
335 
336 
337 /*----------------------------------*/
341 /*----------------------------------*/
342 typedef struct mdma_handle
343 {
344  TSB_MDMA_TypeDef *p_instance;
347 } mdma_t;
348  /* End of group MDMA_Exported_typedef */
352 
353 /*------------------------------------------------------------------------------*/
354 /* Functions */
355 /*------------------------------------------------------------------------------*/
360 TXZ_Result mdma_init(mdma_t *p_obj);
361 TXZ_Result mdma_deinit(void);
362 void mdma_irq_end_handler(void);
363 void mdma_irq_error_handler(uint32_t reason);
364 TXZ_Result mdma_desc_ch_configure(uint32_t ch, mdma_descriptor_set_t *desc, uint32_t desc_num, uint32_t desc_infinite);
366 TXZ_Result mdma_unmask_ch(uint32_t ch);
367 TXZ_Result mdma_mask_ch(uint32_t ch);
368 TXZ_Result mdma_enable_ch(uint32_t ch);
369 TXZ_Result mdma_request_ch(uint32_t ch);
370 TXZ_Result mdma_suspend_ch(uint32_t ch);
371 TXZ_Result mdma_restart_ch(uint32_t ch);
372 TXZ_Result mdma_stop_ch(uint32_t ch);
373 TXZ_Result mdma_end_clear_ch(uint32_t ch);
376 TXZ_Result mdma_basic_start_ch(uint32_t ch, uint32_t interrupt_enable);
378 TXZ_Result mdma_ch_deinit(uint32_t ch);
379 TXZ_Result mdma_force_stop_ch(uint32_t stop_ch, uint32_t work_ch); /* End of group MDMA_Exported_functions */
383  /* End of group MDMA */
387  /* End of group Periph_Driver */
391 
392 #ifdef __cplusplus
393 }
394 #endif /* __cplusplus */
395 #endif /* __MDMA_H */
396 
Descriptor setting structure definition.
Definition: txz_mdma.h:244
TXZ_Result mdma_desc_chain_set(uint32_t addr, mdma_descriptor_set_t *desc)
TXZ_Result mdma_suspend_ch(uint32_t ch)
mdma_ch_interrupt_setting_t int_ch[MDMA_CH_NUM]
Definition: txz_mdma.h:346
uint32_t xfsiz
Definition: txz_mdma.h:252
TXZ_Result mdma_restart_ch(uint32_t ch)
TXZ_Result mdma_deinit(void)
TXZ_Result mdma_end_clear_ch(uint32_t ch)
TXZ_Result
Definition: txz_driver_def.h:43
uint32_t xfsad
Definition: txz_mdma.h:250
TXZ_Result mdma_stop_ch(uint32_t ch)
TXZ_Result mdma_request_ch(uint32_t ch)
uint32_t id
Definition: txz_mdma.h:332
TXZ_Result mdma_unmask_ch(uint32_t ch)
TXZ_Result mdma_mask_ch(uint32_t ch)
uint32_t dsads
Definition: txz_mdma.h:267
TXZ_Result mdma_init(mdma_t *p_obj)
mdma_descriptor_address_t init_desc
Definition: txz_mdma.h:345
uint32_t usize
Definition: txz_mdma.h:248
uint32_t xfsad
Definition: txz_mdma.h:264
struct mdma_handle mdma_t
MDMA handle structure definition.
TXZ_Result mdma_desc_ch_configure(uint32_t ch, mdma_descriptor_set_t *desc, uint32_t desc_num, uint32_t desc_infinite)
void mdma_irq_end_handler(void)
TXZ_Result mdma_ch_init(uint32_t ch, mdma_ch_interrupt_setting_t int_ch)
uint32_t dsads
Definition: txz_mdma.h:253
uint32_t priority
Definition: txz_mdma.h:333
uint32_t xfdad
Definition: txz_mdma.h:265
mdma_bit_t bit
Definition: txz_mdma.h:320
uint32_t xftyp
Definition: txz_mdma.h:263
uint32_t res2
Definition: txz_mdma.h:270
void mdma_irq_error_handler(uint32_t reason)
mdma ch bit union definition.
Definition: txz_mdma.h:319
uint32_t xfsiz
Definition: txz_mdma.h:266
All common macro and definition for TXZ peripheral drivers.
uint32_t res1
Definition: txz_mdma.h:269
Descriptor Table structure definition.
Definition: txz_mdma.h:261
MDMA handle structure definition.
Definition: txz_mdma.h:342
uint32_t dmode
Definition: txz_mdma.h:246
uint32_t ttype
Definition: txz_mdma.h:249
#define MDMA_CH_NUM
Definition: txz_mdma.h:66
Channel setting structure definition.
Definition: txz_mdma.h:329
TSB_MDMA_TypeDef * p_instance
Definition: txz_mdma.h:344
TXZ_Result mdma_force_stop_ch(uint32_t stop_ch, uint32_t work_ch)
TXZ_Result mdma_transfer_end_interrupt_enable_ch(uint32_t ch)
TXZ_Result mdma_transfer_end_interrupt_disable_ch(uint32_t ch)
uint32_t dsnum
Definition: txz_mdma.h:268
uint32_t base
Definition: txz_mdma.h:235
ch bit structure definition.
Definition: txz_mdma.h:278
uint32_t xfdad
Definition: txz_mdma.h:251
TXZ_Result mdma_ch_deinit(uint32_t ch)
TXZ_Result mdma_enable_ch(uint32_t ch)
uint32_t uword
Definition: txz_mdma.h:321
TXZ_Result mdma_basic_start_ch(uint32_t ch, uint32_t interrupt_enable)
uint32_t umode
Definition: txz_mdma.h:247
Descriptor base address definition.
Definition: txz_mdma.h:233