Fix gdma not checking ownership and clearing the owner bit correctly.

This didn't matter in the past but recent version of the idf check that the bit has been cleared in gdma_link_mount_buffers()
This commit is contained in:
159336 at Massey
2025-11-09 08:37:58 +13:00
committed by Omar Chebib
parent ab1bfa960a
commit 33cc9a8740
+3 -3
View File
@@ -307,10 +307,10 @@ bool esp_gdma_read_channel(ESPGdmaState *s, uint32_t chan, uint8_t* buffer, uint
uint32_t out_addr = ((ESP_GDMA_RAM_ADDR >> 20) << 20) | FIELD_EX32(state->link, GDMA_OUT_LINK, ADDR);
/* Boolean to mark whether we need to check the owner for in and out buffers */
const bool owner_check_out = FIELD_EX32(state[ESP_GDMA_OUT_IDX].conf1, GDMA_OUT_CONF1, CHECK_OWNER);
const bool owner_check_out = FIELD_EX32(state->conf1, GDMA_OUT_CONF1, CHECK_OWNER);
/* Boolean to mark whether the transmit (out) buffers must have their owner bit cleared here */
const bool clear_out = FIELD_EX32(state[ESP_GDMA_OUT_IDX].conf0, GDMA_OUT_CONF0, AUTO_WRBACK);
const bool clear_out = FIELD_EX32(state->conf0, GDMA_OUT_CONF0, AUTO_WRBACK);
/* Pointer to the lists that will be browsed by the loop below */
GdmaLinkedList out_list;
@@ -360,7 +360,7 @@ bool esp_gdma_read_channel(ESPGdmaState *s, uint32_t chan, uint8_t* buffer, uint
out_list.config.owner = 0;
/* Write back the modified descriptor, should always be valid */
valid = esp_gdma_read_descr(s, out_addr, &out_list);
valid = esp_gdma_write_descr(s, out_addr, &out_list);
assert(valid);
}