altos: Optimize FEC encode and decode
[fw/altos] / src / stm / ao_spi_stm.c
index d337864816392b04a2f5507a56dcf20bfbeea271..262270861257f6d5c321cda0cd9dcf31710e13d0 100644 (file)
@@ -23,7 +23,8 @@ struct ao_spi_stm_info {
        struct stm_spi *stm_spi;
 };
 
-uint8_t        ao_spi_mutex[STM_NUM_SPI];
+uint8_t                ao_spi_mutex[STM_NUM_SPI];
+uint16_t       ao_spi_speed[STM_NUM_SPI];
 
 static const struct ao_spi_stm_info ao_spi_stm_info[STM_NUM_SPI] = {
        {
@@ -282,7 +283,7 @@ ao_spi_get(uint8_t spi_index)
                        (1 << STM_SPI_CR1_SSI) |                        /*  ... */
                        (0 << STM_SPI_CR1_LSBFIRST) |                   /* Big endian */
                        (1 << STM_SPI_CR1_SPE) |                        /* Enable SPI unit */
-                       (STM_SPI_CR1_BR_PCLK_16 << STM_SPI_CR1_BR) |    /* baud rate to pclk/4 */
+                       (ao_spi_speed[spi_index] << STM_SPI_CR1_BR) |   /* baud rate to pclk/4 */
                        (1 << STM_SPI_CR1_MSTR) |
                        (0 << STM_SPI_CR1_CPOL) |                       /* Format 0 */
                        (0 << STM_SPI_CR1_CPHA));
@@ -310,6 +311,7 @@ ao_spi_channel_init(uint8_t spi_index)
                        (0 << STM_SPI_CR2_SSOE) |
                        (0 << STM_SPI_CR2_TXDMAEN) |
                        (0 << STM_SPI_CR2_RXDMAEN));
+       ao_spi_speed[spi_index] = AO_SPI_SPEED_FAST;
 }
 
 void