Skip to content

Commit e4b3ac6

Browse files
authored
Fix GDMA complilation errors for IDF 6.0-beta2 (#87)
1 parent e35156f commit e4b3ac6

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

components/hub75/src/platforms/gdma/gdma_dma.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,32 @@ bool GdmaDma::init() {
135135
configure_gpio();
136136

137137
// Allocate GDMA channel
138+
//
139+
// Both 6.0 betas report ESP_IDF_VERSION as 6.0.0, so we use __has_include to detect
140+
// the beta2 API change (soc/gdma_channel.h was removed in the same refactor).
141+
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(6, 0, 0) && !__has_include("soc/gdma_channel.h")
142+
// ESP-IDF >= 6.0-beta2: simplified config, direction via NULL parameter
143+
gdma_channel_alloc_config_t dma_alloc_config = {.flags = {.isr_cache_safe = 0}};
144+
esp_err_t err = gdma_new_ahb_channel(&dma_alloc_config, &dma_chan_, nullptr);
145+
146+
#elif ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0)
147+
// ESP-IDF 5.4 - 6.0-beta1: gdma_new_ahb_channel (2-arg)
138148
gdma_channel_alloc_config_t dma_alloc_config = {.sibling_chan = nullptr,
139149
.direction = GDMA_CHANNEL_DIRECTION_TX,
140-
.flags = {.reserve_sibling = 0
141-
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
142-
,
143-
.isr_cache_safe = 0
144-
#endif
145-
}};
146-
147-
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0)
150+
.flags = {.reserve_sibling = 0, .isr_cache_safe = 0}};
148151
esp_err_t err = gdma_new_ahb_channel(&dma_alloc_config, &dma_chan_);
152+
153+
#elif ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
154+
// ESP-IDF 5.0 - 5.3: gdma_new_channel with isr_cache_safe flag
155+
gdma_channel_alloc_config_t dma_alloc_config = {.sibling_chan = nullptr,
156+
.direction = GDMA_CHANNEL_DIRECTION_TX,
157+
.flags = {.reserve_sibling = 0, .isr_cache_safe = 0}};
158+
esp_err_t err = gdma_new_channel(&dma_alloc_config, &dma_chan_);
159+
149160
#else
161+
// ESP-IDF < 5.0: gdma_new_channel without isr_cache_safe
162+
gdma_channel_alloc_config_t dma_alloc_config = {
163+
.sibling_chan = nullptr, .direction = GDMA_CHANNEL_DIRECTION_TX, .flags = {.reserve_sibling = 0}};
150164
esp_err_t err = gdma_new_channel(&dma_alloc_config, &dma_chan_);
151165
#endif
152166
if (err != ESP_OK) {

0 commit comments

Comments
 (0)