diff --git a/flight/pios/stm32f10x/pios_spi.c b/flight/pios/stm32f10x/pios_spi.c
index 01b7722aa..21db6bd5e 100644
--- a/flight/pios/stm32f10x/pios_spi.c
+++ b/flight/pios/stm32f10x/pios_spi.c
@@ -44,7 +44,6 @@ static bool PIOS_SPI_validate(__attribute__((unused)) struct pios_spi_dev *com_d
/* Should check device magic here */
return true;
}
-#define SPI_MAX_BLOCK_PIO 128
#if defined(PIOS_INCLUDE_FREERTOS)
static struct pios_spi_dev *PIOS_SPI_alloc(void)
@@ -433,7 +432,23 @@ int32_t PIOS_SPI_TransferByte(uint32_t spi_id, uint8_t b)
return rx_byte;
}
-static int32_t SPI_DMA_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
+/**
+ * Transfers a block of bytes via DMA.
+ * \param[in] spi SPI number (0 or 1)
+ * \param[in] send_buffer pointer to buffer which should be sent.
+ * If NULL, 0xff (all-one) will be sent.
+ * \param[in] receive_buffer pointer to buffer which should get the received values.
+ * If NULL, received bytes will be discarded.
+ * \param[in] len number of bytes which should be transfered
+ * \param[in] callback pointer to callback function which will be executed
+ * from DMA channel interrupt once the transfer is finished.
+ * If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will
+ * block until the transfer is finished.
+ * \return >= 0 if no error during transfer
+ * \return -1 if disabled SPI port selected
+ * \return -3 if function has been called during an ongoing DMA transfer
+ */
+int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
{
struct pios_spi_dev *spi_dev = (struct pios_spi_dev *)spi_id;
@@ -565,95 +580,6 @@ static int32_t SPI_DMA_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer
return 0;
}
-/**
- * Transfers a block of bytes via PIO.
- *
- * \param[in] spi_id SPI device handle
- * \param[in] send_buffer pointer to buffer which should be sent.
- * If NULL, 0xff (all-one) will be sent.
- * \param[in] receive_buffer pointer to buffer which should get the received values.
- * If NULL, received bytes will be discarded.
- * \param[in] len number of bytes which should be transfered
- * \return >= 0 if no error during transfer
- * \return -1 if disabled SPI port selected
- * \return -3 if function has been called during an ongoing DMA transfer
- */
-static int32_t SPI_PIO_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len)
-{
- struct pios_spi_dev *spi_dev = (struct pios_spi_dev *)spi_id;
- uint8_t b;
-
- bool valid = PIOS_SPI_validate(spi_dev);
-
- PIOS_Assert(valid)
-
- /* Exit if ongoing transfer */
- if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)) {
- return -3;
- }
-
- /* Make sure the RXNE flag is cleared by reading the DR register */
- b = spi_dev->cfg->regs->DR;
-
- while (len--) {
- /* get the byte to send */
- b = send_buffer ? *(send_buffer++) : 0xff;
-
- /* Start the transfer */
- spi_dev->cfg->regs->DR = b;
-
- /* Wait until there is a byte to read */
- while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_RXNE)) {
- ;
- }
-
- /* Read the rx'd byte */
- b = spi_dev->cfg->regs->DR;
-
- /* save the received byte */
- if (receive_buffer) {
- *(receive_buffer++) = b;
- }
-
- /* Wait until the TXE goes high */
- while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_TXE)) {
- ;
- }
- }
-
- /* Wait for SPI transfer to have fully completed */
- while (spi_dev->cfg->regs->SR & SPI_I2S_FLAG_BSY) {
- ;
- }
-
- return 0;
-}
-
-
-/**
- * Transfers a block of bytes via PIO or DMA.
- * \param[in] spi_id SPI device handle
- * \param[in] send_buffer pointer to buffer which should be sent.
- * If NULL, 0xff (all-one) will be sent.
- * \param[in] receive_buffer pointer to buffer which should get the received values.
- * If NULL, received bytes will be discarded.
- * \param[in] len number of bytes which should be transfered
- * \param[in] callback pointer to callback function which will be executed
- * from DMA channel interrupt once the transfer is finished.
- * If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will
- * block until the transfer is finished.
- * \return >= 0 if no error during transfer
- * \return -1 if disabled SPI port selected
- * \return -3 if function has been called during an ongoing DMA transfer
- */
-int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
-{
- if (callback || len > SPI_MAX_BLOCK_PIO) {
- return SPI_DMA_TransferBlock(spi_id, send_buffer, receive_buffer, len, callback);
- }
- return SPI_PIO_TransferBlock(spi_id, send_buffer, receive_buffer, len);
-}
-
/**
* Check if a transfer is in progress
* \param[in] spi SPI number (0 or 1)