From 0fa3e7247dd9897e380f3a6756887cedb3939482 Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Wed, 27 Jul 2022 08:24:42 -0500 Subject: [PATCH] Some PIO setup was using SM 0 rather than the allocated SM (#940) --- src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c b/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c index 0fd17f4..12b633a 100644 --- a/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c +++ b/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c @@ -258,13 +258,13 @@ int cyw43_spi_transfer(cyw43_int_t *self, const uint8_t *tx, size_t tx_length, u dma_channel_config out_config = dma_channel_get_default_config(bus_data->dma_out); channel_config_set_bswap(&out_config, true); - channel_config_set_dreq(&out_config, pio_get_dreq(bus_data->pio, 0, true)); + channel_config_set_dreq(&out_config, pio_get_dreq(bus_data->pio, bus_data->pio_sm, true)); dma_channel_configure(bus_data->dma_out, &out_config, &bus_data->pio->txf[0], tx, tx_length / 4, true); dma_channel_config in_config = dma_channel_get_default_config(bus_data->dma_in); channel_config_set_bswap(&in_config, true); - channel_config_set_dreq(&in_config, pio_get_dreq(bus_data->pio, 0, false)); + channel_config_set_dreq(&in_config, pio_get_dreq(bus_data->pio, bus_data->pio_sm, false)); channel_config_set_write_increment(&in_config, true); channel_config_set_read_increment(&in_config, false); dma_channel_configure(bus_data->dma_in, &in_config, rx + tx_length, &bus_data->pio->rxf[0], rx_length / 4 - tx_length / 4, true); @@ -299,12 +299,12 @@ int cyw43_spi_transfer(cyw43_int_t *self, const uint8_t *tx, size_t tx_length, u dma_channel_config out_config = dma_channel_get_default_config(bus_data->dma_out); channel_config_set_bswap(&out_config, true); - channel_config_set_dreq(&out_config, pio_get_dreq(bus_data->pio, 0, true)); + channel_config_set_dreq(&out_config, pio_get_dreq(bus_data->pio, bus_data->pio_sm, true)); dma_channel_configure(bus_data->dma_out, &out_config, &bus_data->pio->txf[0], tx, tx_length / 4, true); bus_data->pio->fdebug = 1u << PIO_FDEBUG_TXSTALL_LSB; - pio_sm_set_enabled(bus_data->pio, 0, true); + pio_sm_set_enabled(bus_data->pio, bus_data->pio_sm, true); while (!(bus_data->pio->fdebug & (1u << PIO_FDEBUG_TXSTALL_LSB))) { tight_loop_contents(); // todo timeout }