50 dma_test_reg_set(mode);
66 uint8_t priority[DMA_MAX_CHANNELS];
67 uint8_t i, ch_priority, order;
69 for (i = 0; i < DMA_MAX_CHANNELS; i++) {
74 for (uint8_t ch_num = 0; ch_num < DMA_MAX_CHANNELS; ch_num++) {
76 ch_priority = dma_cfg_l__ch_prior__getf(ch_num);
80 for (i = 0; i <= DMA_MAX_CHANNELS; i++) {
81 if (A_MAXEQ_B(ch_priority, priority[i]) || i == DMA_MAX_CHANNELS) {
89 for (i = ch_num; i > order; i--) {
90 priority[i] = priority[i - 1];
93 priority[order] = ch_priority;
111 for (uint8_t i = 0; i < DMA_MAX_CHANNELS; i++) {
148 uint8_t errorCode = DMA_OK;
151 errorCode = DMA_ECHRNG;
170 uint8_t errorCode = DMA_OK;
173 errorCode = DMA_ECHRNG;
175 if (((uint16_t)dma_ch_en_reg_get( )) & ch_num) {
176 errorCode = DMA_EBUSY;
197 uint8_t ch_index = 0;
200 while (ch_index < DMA_MAX_CHANNELS) {
201 if (ch_enum == ch_num) {
237 uint8_t errorCode = 0;
238 uint8_t dma_en = dma_cfg_reg__dma_en__getf( );
241 dma_cfg_reg_set(DISABLE);
246 if (dma_cfg_reg_get( )) {
247 errorCode = DMA_EBUSY;
269 ret = (bool)dma_cfg_reg__dma_en__getf( );
287 uint8_t errorCode = 0;
291 if (errorCode == 0) {
295 dma_ch_en_reg_set(ch_num);
314 uint8_t errorCode = 0;
320 if (errorCode == 0) {
321 enabled_ch = (dma_ch_en_reg_get( ) & ch_num);
322 if (enabled_ch != 0) {
327 if (dma_ch_en_reg_get( ) & ch_num) {
328 errorCode = DMA_EBUSY;
355 if (ch_index == DMA_MAX_CHANNELS)
362 ret = (bool)REG_BIT_VAL_GET(dma_ch_en_reg__ch_en__getf( ), 1 << ch_index, ch_index);
380 uint8_t errorCode = DMA_OK;
385 if (errorCode == 0) {
388 for (uint8_t x = 0; x < DMA_MAX_CHANNELS; x++) {
389 if (ch_num & (1 << x)) {
390 if (dma_ctl_l__int_en__getf(x) != 0x1) {
391 dma_ctl_l__int_en__setf(x, ENABLE);
413 uint8_t errorCode = DMA_OK;
418 if (errorCode == 0) {
421 for (uint8_t x = 0; x < DMA_MAX_CHANNELS; x++) {
422 if (ch_num & (1 << x)) {
423 if (dma_ctl_l__int_en__getf(x) != 0x0) {
424 dma_ctl_l__int_en__setf(x, DISABLE);
446 uint8_t errorCode = DMA_OK;
451 if (errorCode == 0) {
455 for (uint8_t x = 0; x < DMA_MAX_INTERRUPTS; x++) {
456 if (ch_irq & (1 << x)) {
459 dma_mask_tfr_set(reg);
462 dma_mask_block_set(reg);
465 dma_mask_src_tran_set(reg);
468 dma_mask_dst_tran_set(reg);
471 dma_mask_err_set(reg);
494 uint8_t errorCode = DMA_OK;
499 if (errorCode == 0) {
503 for (uint8_t x = 0; x < DMA_MAX_INTERRUPTS; x++) {
504 if (ch_irq & (1 << x)) {
507 dma_mask_tfr_set(reg);
510 dma_mask_block_set(reg);
513 dma_mask_src_tran_set(reg);
516 dma_mask_dst_tran_set(reg);
519 dma_mask_err_set(reg);
542 uint8_t errorCode = DMA_OK;
547 if (errorCode == 0) {
551 for (uint8_t x = 0; x < DMA_MAX_INTERRUPTS; x++) {
552 if (ch_irq & (1 << x)) {
555 dma_clear_tfr_set(reg);
558 dma_clear_block_set(reg);
561 dma_clear_src_tran_set(reg);
564 dma_clear_dst_tran_set(reg);
567 dma_clear_err_set(reg);
596 if (errorCode == 0) {
601 if (errorCode == 0) {
606 if (errorCode == 0) {
611 if (errorCode == 0) {
640 if (errorCode == 0) {
655 dma_sar_set(ch_index, ch->
sar);
656 dma_dar_set(ch_index, ch->
dar);
682 if (ch_index == DMA_MAX_CHANNELS)
715 if (ch_index == DMA_MAX_CHANNELS) {
716 errorCode = DMA_ECHRNG;
722 if (errorCode == 0) {
727 if (errorCode == 0) {
739 if (errorCode == 0) {
762 uint8_t i, ch_index, callbackArg;
771 if (dma_status_int__err__getf( )) {
772 reg = dma_status_err_get( );
777 for (i = 0; i < DMA_MAX_CHANNELS; i++) {
789 userCallback(callbackArg);
793 dma_clear_err_set(mask);
796 else if (dma_status_int__tfr__getf( )) {
797 reg = dma_status_tfr_get( );
802 for (i = 0; i < DMA_MAX_CHANNELS; i++) {
814 dma_clear_block_set(mask);
815 dma_clear_src_tran_set(mask);
816 dma_clear_dst_tran_set(mask);
826 userCallback(callbackArg);
uint8_t Ch_Order[DMA_MAX_CHANNELS]
DMA_Callback userListener
struct dma_instance_s::@0 Ch[DMA_MAX_CHANNELS]
DMA_Callback userCallback
eDMA_Burst_Trans_Len ctl_dst_msize
eDMA_Fifo_Mode cfg_fifo_mode
eDMA_Trans_Width ctl_src_tr_width
eDMA_SW_HW_HS_Select cfg_hs_sel_src
eDMA_SW_HW_HS_Select cfg_hs_sel_dst
eDMA_Burst_Trans_Len ctl_src_msize
eDMA_Trans_Flow ctl_tt_fc
eDMA_Trans_Width ctl_dst_tr_width
eDMA_HS_Interface cfg_dst_per
eDMA_Addr_Increment ctl_dinc
eDMA_HS_Interface cfg_src_per
eDMA_Addr_Increment ctl_sinc
__RAM_CODE uint8_t xc_dma_enable_channel_irq(eDMA_Ch_Num ch_num)
xc_dma_enable_channel_irq
__RAM_CODE uint8_t xc_dma_check_channel_range(eDMA_Ch_Num ch_num)
xc_dma_check_channel_range
__RAM_CODE uint8_t xc_dma_disable(void)
xc_dma_disable
__RAM_CODE uint8_t xc_dma_check_channel_busy(eDMA_Ch_Num ch_num)
xc_dma_check_channel_busy
__RAM_CODE uint8_t xc_dma_disable_channel(eDMA_Ch_Num ch_num)
xc_dma_disable_channel
__RAM_CODE void xc_dma_set_channel_priority_order(DMA_Instance_t *inst)
xc_dma_set_channel_priority_order
__RAM_CODE uint8_t xc_dma_set_channel_config(eDMA_Ch_Num ch_num, DMA_Chx_Cfg_t *ch)
xc_dma_set_channel_config
__RAM_CODE bool xc_dma_set_listener(eDMA_Ch_Num ch_num, DMA_Callback userFunction)
xc_dma_set_listener
__RAM_CODE uint8_t xc_dma_clear_irq(eDMA_Ch_Num ch_num, eDMA_Irq ch_irq)
xc_dma_clear_irq
__RAM_CODE uint8_t xc_dma_init(void)
xc_dma_init
uint8_t xc_dma_unmask_irq(eDMA_Ch_Num ch_num, eDMA_Irq ch_irq)
xc_dma_unmask_irq
__RAM_CODE uint8_t xc_dma_enable_channel(eDMA_Ch_Num ch_num)
xc_dma_enable_channel
__RAM_CODE uint8_t xc_dma_disable_channel_irq(eDMA_Ch_Num ch_num)
xc_dma_disable_channel_irq
__RAM_CODE void xc_dma_enable(void)
xc_dma_enable
__RAM_CODE void xc_dma_reset_instance(DMA_Instance_t *inst)
xc_dma_reset_instance
__RAM_CODE void xc_dma_set_test_mode(uint8_t mode)
xc_dma_set_test_mode
bool xc_dma_is_channel_enabled(eDMA_Ch_Num ch_num)
xc_dma_is_channel_enabled
__RAM_CODE void DMA_Handler(void)
__RAM_CODE uint8_t xc_dma_mask_irq(eDMA_Ch_Num ch_num, eDMA_Irq ch_irq)
xc_dma_mask_irq
__RAM_CODE uint8_t xc_dma_start_transfer(eDMA_Ch_Num ch_num, DMA_Callback cb_func)
xc_dma_start_transfer
bool xc_dma_is_enable(void)
xc_dma_is_enable
__RAM_CODE uint8_t xc_dma_get_channel_index(eDMA_Ch_Num ch_num)
xc_dma_get_channel_index
DMA_Instance_t DMA_Instance
__RAM_CODE bool dma_irq_handler(DMA_Instance_t *inst)
dma_irq_handler
The header of xc_drv_dma.c
enum dw_dmac_irq eDMA_Irq
enum dmac_channel_number eDMA_Ch_Num
void(* DMA_Callback)(uint8_t eCode)