@@ -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