You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.0 KiB
59 lines
2.0 KiB
|
5 months ago
|
/*
|
||
|
|
* Copyright (c) 2006-2025, RT-Thread Development Team
|
||
|
|
*
|
||
|
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
|
*
|
||
|
|
* Change Logs:
|
||
|
|
* Date Author Notes
|
||
|
|
* 2024-03-19 Evlers first implementation
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef _DRV_DMA_H_
|
||
|
|
#define _DRV_DMA_H_
|
||
|
|
|
||
|
|
|
||
|
|
#if defined SOC_SERIES_GD32E23x
|
||
|
|
#define DRV_DMA_CONFIG(chx) \
|
||
|
|
(struct dma_config)
|
||
|
|
{ \
|
||
|
|
.periph = DMA, \
|
||
|
|
.rcu = RCU_DMA, \
|
||
|
|
.channel = DMA_CH##chx, \
|
||
|
|
.irq = ((chx) == 0 ? DMA_Channel0_IRQn : \
|
||
|
|
(chx) == 1 ? DMA_Channel1_2_IRQn : \
|
||
|
|
(chx) == 2 ? DMA_Channel1_2_IRQn : \
|
||
|
|
(chx) == 3 ? DMA_Channel3_4_IRQn : \
|
||
|
|
(chx) == 4 ? DMA_Channel3_4_IRQn : (IRQn_Type)0) \
|
||
|
|
}
|
||
|
|
struct dma_config
|
||
|
|
{
|
||
|
|
uint32_t periph;
|
||
|
|
rcu_periph_enum rcu;
|
||
|
|
dma_channel_enum channel;
|
||
|
|
IRQn_Type irq;
|
||
|
|
};
|
||
|
|
|
||
|
|
#else
|
||
|
|
|
||
|
|
#define DRV_DMA_CONFIG(dmax, chx, subx) { \
|
||
|
|
.periph = DMA##dmax, \
|
||
|
|
.channel = DMA_CH##chx, \
|
||
|
|
.rcu = RCU_DMA##dmax, \
|
||
|
|
.subperiph = DMA_SUBPERI##subx, \
|
||
|
|
.irq = DMA##dmax##_Channel##chx##_IRQn, \
|
||
|
|
}
|
||
|
|
|
||
|
|
struct dma_config
|
||
|
|
{
|
||
|
|
uint32_t periph;
|
||
|
|
rcu_periph_enum rcu;
|
||
|
|
dma_channel_enum channel;
|
||
|
|
dma_subperipheral_enum subperiph;
|
||
|
|
IRQn_Type irq;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#endif /* _DRV_DMA_H_ */
|
||
|
|
|