diff --git a/src/platform/PICO/bus_spi_pico.c b/src/platform/PICO/bus_spi_pico.c index 4ecfd7ef5e..9bdb6dfc0c 100644 --- a/src/platform/PICO/bus_spi_pico.c +++ b/src/platform/PICO/bus_spi_pico.c @@ -302,7 +302,6 @@ void spiInitBusDMA(void) // no more available channels so give up return; } - channel_rx = dma_claim_unused_channel(true); if (channel_rx == -1) { // no more available channels so give up, first releasing the one @@ -311,6 +310,14 @@ void spiInitBusDMA(void) return; } + if (!dmaAllocate(DMA_CHANNEL_TO_IDENTIFIER(channel_tx), OWNER_SPI_SDO, device + 1) || + !dmaAllocate(DMA_CHANNEL_TO_IDENTIFIER(channel_rx), OWNER_SPI_SDI, device + 1)) { + // This should never happen if all allocated channels are claimed + dma_channel_unclaim(channel_tx); + dma_channel_unclaim(channel_rx); + return; + } + bus->dmaTx = &dmaDescriptors[DMA_CHANNEL_TO_INDEX(channel_tx)]; bus->dmaTx->channel = channel_tx; diff --git a/src/platform/PICO/dma_pico.c b/src/platform/PICO/dma_pico.c index 0804f60abd..9273bbee62 100644 --- a/src/platform/PICO/dma_pico.c +++ b/src/platform/PICO/dma_pico.c @@ -47,7 +47,7 @@ dmaChannelDescriptor_t dmaDescriptors[DMA_LAST_HANDLER] = { DEFINE_DMA_CHANNEL(DMA_CH9_HANDLER), DEFINE_DMA_CHANNEL(DMA_CH10_HANDLER), DEFINE_DMA_CHANNEL(DMA_CH11_HANDLER), -#ifdef RP2350 +#if defined(RP2350A) || defined(RP2350B) DEFINE_DMA_CHANNEL(DMA_CH12_HANDLER), DEFINE_DMA_CHANNEL(DMA_CH13_HANDLER), DEFINE_DMA_CHANNEL(DMA_CH14_HANDLER), diff --git a/src/platform/PICO/dma_reqmap_mcu.c b/src/platform/PICO/dma_reqmap_mcu.c index 5f9c8f3af0..b5f16f6710 100644 --- a/src/platform/PICO/dma_reqmap_mcu.c +++ b/src/platform/PICO/dma_reqmap_mcu.c @@ -49,7 +49,7 @@ static dmaChannelSpec_t dmaChannelSpec[MAX_PERIPHERAL_DMA_OPTIONS] = { DMA(10), DMA(11), DMA(12), -#ifdef RP2350 +#if defined(RP2350A) || defined(RP2350B) DMA(13), DMA(14), DMA(15), diff --git a/src/platform/PICO/include/platform/dma.h b/src/platform/PICO/include/platform/dma.h index 4dbe614c82..7579a9d4c5 100644 --- a/src/platform/PICO/include/platform/dma.h +++ b/src/platform/PICO/include/platform/dma.h @@ -39,7 +39,7 @@ typedef enum { DMA_CH9_HANDLER, DMA_CH10_HANDLER, DMA_CH11_HANDLER, -#ifdef RP2350 +#if defined(RP2350A) || defined(RP2350B) DMA_CH12_HANDLER, DMA_CH13_HANDLER, DMA_CH14_HANDLER,