altos/stm32f1: Allow PA6 to be left alone in the SPI code
[fw/altos] / src / stm32f1 / ao_spi_stm.c
index 0ec0110db6b3ac1b8438810f3b88c626a4bda8d1..2c2fcd3a3b7bac8ff51ba6889a439c2ae8e36f5c 100644 (file)
@@ -306,7 +306,9 @@ ao_spi_disable_pin_config(uint8_t spi_pin_config)
 #if SPI_1_PA5_PA6_PA7
        case AO_SPI_1_PA5_PA6_PA7:
                stm_spi_output_disable(&stm_gpioa, 5, SPI_1_MODE_OUTPUT);
+#ifndef SPI_1_PA6_DISABLE
                stm_spi_input_disable(&stm_gpioa, 6);
+#endif
                stm_spi_output_disable(&stm_gpioa, 7, SPI_1_MODE_OUTPUT);
                break;
 #endif
@@ -347,13 +349,21 @@ ao_spi_enable_pin_config(uint8_t spi_pin_config)
        switch (spi_pin_config) {
 #if SPI_1_PA5_PA6_PA7
        case AO_SPI_1_PA5_PA6_PA7:
+               stm_set_afio_mapr(STM_AFIO_MAPR_SPI1_REMAP,
+                                 STM_AFIO_MAPR_SPI1_REMAP_PA4_PA5_PA6_PA7,
+                                 STM_AFIO_MAPR_SPI1_REMAP_MASK);
                stm_spi_output_enable(&stm_gpioa, 5, SPI_1_MODE_OUTPUT);
+#ifndef SPI_1_PA6_DISABLE
                stm_spi_input_enable(&stm_gpioa, 6);
+#endif
                stm_spi_output_enable(&stm_gpioa, 7, SPI_1_MODE_OUTPUT);
                break;
 #endif
 #if SPI_1_PB3_PB4_PB5
        case AO_SPI_1_PB3_PB4_PB5:
+               stm_set_afio_mapr(STM_AFIO_MAPR_SPI1_REMAP,
+                                 STM_AFIO_MAPR_SPI1_REMAP_PA15_PB3_PB4_PB5,
+                                 STM_AFIO_MAPR_SPI1_REMAP_MASK);
                stm_spi_output_enable(&stm_gpiob, 3, SPI_1_MODE_OUTPUT);
                stm_spi_input_enable(&stm_gpiob, 4);
                stm_spi_output_enable(&stm_gpiob, 5, SPI_1_MODE_OUTPUT);