mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 20:41:14 +00:00
gdma: dynamic alloc DMA channels
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
set(srcs
|
||||
"adc_periph.c"
|
||||
"gdma_periph.c"
|
||||
"gpio_periph.c"
|
||||
"interrupts.c"
|
||||
"spi_periph.c"
|
||||
|
34
components/soc/esp32c3/gdma_periph.c
Normal file
34
components/soc/esp32c3/gdma_periph.c
Normal file
@@ -0,0 +1,34 @@
|
||||
// Copyright 2020 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "soc/gdma_periph.h"
|
||||
|
||||
const gdma_signal_conn_t gdma_periph_signals = {
|
||||
.groups = {
|
||||
[0] = {
|
||||
.module = PERIPH_GDMA_MODULE,
|
||||
.pairs = {
|
||||
[0] = {
|
||||
.irq_id = ETS_DMA_CH0_INTR_SOURCE
|
||||
},
|
||||
[1] = {
|
||||
.irq_id = ETS_DMA_CH1_INTR_SOURCE
|
||||
},
|
||||
[2] = {
|
||||
.irq_id = ETS_DMA_CH2_INTR_SOURCE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
@@ -14,4 +14,5 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define SOC_GDMA_CHANNELS_NUM (3) /*!< GDMA has 3 TX and 3 RX */
|
||||
#define SOC_GDMA_GROUPS (1)
|
||||
#define SOC_GDMA_PAIRS_PER_GROUP (3)
|
||||
|
24
components/soc/esp32c3/include/soc/gdma_channel.h
Normal file
24
components/soc/esp32c3/include/soc/gdma_channel.h
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright 2020 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#pragma once
|
||||
|
||||
// The following macros have a format SOC_[periph][instance_id] to make it work with `GDMA_MAKE_TRIGGER`
|
||||
#define SOC_GDMA_TRIG_PERIPH_M2M0 (-1)
|
||||
#define SOC_GDMA_TRIG_PERIPH_SPI2 (0)
|
||||
#define SOC_GDMA_TRIG_PERIPH_UART0 (2)
|
||||
#define SOC_GDMA_TRIG_PERIPH_I2S0 (3)
|
||||
#define SOC_GDMA_TRIG_PERIPH_AES0 (6)
|
||||
#define SOC_GDMA_TRIG_PERIPH_SHA0 (7)
|
||||
#define SOC_GDMA_TRIG_PERIPH_ADC0 (8)
|
@@ -12,7 +12,6 @@
|
||||
// Attention: These fixed DMA channels are temporarily workaround before we have a centralized DMA controller API to help alloc the channel dynamically
|
||||
// Remove them when GDMA driver API is ready
|
||||
#define SOC_GDMA_AES_DMA_CHANNEL (0)
|
||||
#define SOC_GDMA_M2M_DMA_CHANNEL (0)
|
||||
#define SOC_GDMA_SHA_DMA_CHANNEL (1)
|
||||
#define SOC_GDMA_SPI2_DMA_CHANNEL (2)
|
||||
#define SOC_GDMA_ADC_DMA_CHANNEL (0)
|
||||
|
Reference in New Issue
Block a user