This commit is contained in:
刘可亮
2024-01-27 08:47:24 +08:00
parent d3bd993b5f
commit 9f7ba67007
2345 changed files with 74421 additions and 76616 deletions

View File

@@ -28,37 +28,52 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 0,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI0,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_DMA,
.smp_period = 1,
.mode = AIC_GPAI_MODE_PERIOD,
.fifo_depth = 64,
.obtain_data_mode = AIC_GPAI0_OBTAIN_DATA_MODE,
.mode = AIC_GPAI0_MODE,
#ifdef AIC_GPAI0_PERIOD_TIME
.smp_period = AIC_GPAI0_PERIOD_TIME,
#endif
#ifdef AIC_GPAI_DRV_V11
.fifo_depth = 8,
#else
.fifo_depth = 32,
#endif
},
#endif
#ifdef AIC_USING_GPAI1
{
.id = 1,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI1,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.fifo_depth = 64,
.obtain_data_mode = AIC_GPAI1_OBTAIN_DATA_MODE,
.mode = AIC_GPAI1_MODE,
#ifdef AIC_GPAI1_PERIOD_TIME
.smp_period = AIC_GPAI1_PERIOD_TIME,
#endif
#ifdef AIC_GPAI_DRV_V11
.fifo_depth = 8,
#else
.fifo_depth = 32,
#endif
},
#endif
#ifdef AIC_USING_GPAI2
{
.id = 2,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI2,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.smp_period = 1,
.mode = AIC_GPAI_MODE_PERIOD,
.obtain_data_mode = AIC_GPAI2_OBTAIN_DATA_MODE,
.mode = AIC_GPAI2_MODE,
#ifdef AIC_GPAI2_PERIOD_TIME
.smp_period = AIC_GPAI2_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -66,11 +81,14 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 3,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI3,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI3_OBTAIN_DATA_MODE,
.mode = AIC_GPAI3_MODE,
#ifdef AIC_GPAI3_PERIOD_TIME
.smp_period = AIC_GPAI3_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -78,11 +96,14 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 4,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI4,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI4_OBTAIN_DATA_MODE,
.mode = AIC_GPAI4_MODE,
#ifdef AIC_GPAI4_PERIOD_TIME
.smp_period = AIC_GPAI4_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -90,11 +111,14 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 5,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI5,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI5_OBTAIN_DATA_MODE,
.mode = AIC_GPAI5_MODE,
#ifdef AIC_GPAI5_PERIOD_TIME
.smp_period = AIC_GPAI5_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -102,11 +126,14 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 6,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI6,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI6_OBTAIN_DATA_MODE,
.mode = AIC_GPAI6_MODE,
#ifdef AIC_GPAI6_PERIOD_TIME
.smp_period = AIC_GPAI6_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -114,22 +141,27 @@ struct aic_gpai_ch aic_gpai_chs[] = {
{
.id = 7,
.available = 1,
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_GPAI_DRV_V20
.dma_port_id = DMA_ID_GPAI7,
#endif
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI7_OBTAIN_DATA_MODE,
.mode = AIC_GPAI7_MODE,
#ifdef AIC_GPAI7_PERIOD_TIME
.smp_period = AIC_GPAI7_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
#ifdef AIC_GPAI_DRV_V11
#ifdef AIC_USING_GPAI8
{
.id = 8,
.available = 1,
.dma_port_id = DMA_ID_GPAI8,
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI8_OBTAIN_DATA_MODE,
.mode = AIC_GPAI8_MODE,
#ifdef AIC_GPAI8_PERIOD_TIME
.smp_period = AIC_GPAI8_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -138,8 +170,11 @@ struct aic_gpai_ch aic_gpai_chs[] = {
.id = 9,
.available = 1,
.dma_port_id = DMA_ID_GPAI9,
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI9_OBTAIN_DATA_MODE,
.mode = AIC_GPAI9_MODE,
#ifdef AIC_GPAI9_PERIOD_TIME
.smp_period = AIC_GPAI9_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -148,8 +183,11 @@ struct aic_gpai_ch aic_gpai_chs[] = {
.id = 10,
.available = 1,
.dma_port_id = DMA_ID_GPAI10,
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI10_OBTAIN_DATA_MODE,
.mode = AIC_GPAI10_MODE,
#ifdef AIC_GPAI10_PERIOD_TIME
.smp_period = AIC_GPAI10_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
@@ -158,12 +196,14 @@ struct aic_gpai_ch aic_gpai_chs[] = {
.id = 11,
.available = 1,
.dma_port_id = DMA_ID_GPAI11,
.obtain_data_mode = AIC_GPAI_OBTAIN_DATA_BY_CPU,
.mode = AIC_GPAI_MODE_SINGLE,
.obtain_data_mode = AIC_GPAI11_OBTAIN_DATA_MODE,
.mode = AIC_GPAI11_MODE,
#ifdef AIC_GPAI11_PERIOD_TIME
.smp_period = AIC_GPAI11_PERIOD_TIME,
#endif
.fifo_depth = 8,
},
#endif
#endif
};
static rt_err_t drv_gpai_enabled(struct rt_adc_device *dev,
@@ -220,7 +260,18 @@ static rt_uint32_t drv_gpai_get_irq_count(struct rt_adc_device *dev,
return chan->irq_count;
}
#if defined(AIC_GPAI_DRV_V11) && defined(AIC_DMA_DRV)
static rt_uint32_t drv_gpai_obtain_data_mode(struct rt_adc_device *dev,
rt_uint32_t channel)
{
struct aic_gpai_ch *chan = hal_gpai_ch_is_valid(channel);
if (!chan)
return -RT_EINVAL;
return chan->obtain_data_mode;
}
#if defined(AIC_GPAI_DRV_V20) && defined(AIC_DMA_DRV)
static rt_err_t drv_gpai_config_dma(struct rt_adc_device *dev, void *dma_info)
{
if (!dma_info)
@@ -257,12 +308,13 @@ static const struct rt_adc_ops aic_adc_ops =
{
.enabled = drv_gpai_enabled,
.convert = drv_gpai_convert,
#if defined(AIC_GPAI_DRV_V11) && defined(AIC_DMA_DRV)
#if defined(AIC_GPAI_DRV_V20) && defined(AIC_DMA_DRV)
.config_dma = drv_gpai_config_dma,
.get_dma_data = drv_gpai_get_dma_data,
#endif
.get_resolution = drv_gpai_resolution,
.get_irq_count = drv_gpai_get_irq_count,
.get_obtaining_data_mode = drv_gpai_obtain_data_mode,
};
static int drv_gpai_init(void)