feat(sdmmc): add dma_burst_size config, fix DMA to PSRAM on esp32p4

FIFOTH.dma_multiple_transaction_size was never programmed and kept its
reset value of 0, which selects 1-byte DMA bursts. On esp32p4 with flash
encryption enabled those bursts do not reach PSRAM.

Add sdmmc_ll_set_dma_burst_size() and a dma_burst_size field in
sd_host_sdmmc_cfg_t, 0 selecting the per-target default. esp32p4
defaults to 16 bytes; esp32 and esp32s3 keep their current 1 byte.
This commit is contained in:
Yogesh Mantri
2026-09-17 16:02:14 +08:00
parent 8438b4b0ca
commit 2e02ed8484
6 changed files with 67 additions and 0 deletions
@@ -22,6 +22,7 @@ extern "C" {
typedef struct {
uint32_t event_queue_items; ///< Event queue items. If 0, fallback to default queue item number (4)
uint32_t dma_desc_num; ///< Number of DMA descriptor, fallback to default dma descriptor number (4)
size_t dma_burst_size; ///< DMA burst size in bytes, a power of two in 4..256. 0 for the default, 1 to disable the burst
} sd_host_sdmmc_cfg_t;
/**