From c2d81fc246c3ce946fbf19c8d33cd9c1286adc2a Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Wed, 8 May 2019 11:47:24 +0200 Subject: [PATCH] stm32-common/spi: add customizable gpio modes for spi pins --- cpu/stm32_common/periph/spi.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cpu/stm32_common/periph/spi.c b/cpu/stm32_common/periph/spi.c index 7f0d7a9e65..a3e873de72 100644 --- a/cpu/stm32_common/periph/spi.c +++ b/cpu/stm32_common/periph/spi.c @@ -116,6 +116,28 @@ int spi_init_cs(spi_t bus, spi_cs_t cs) return SPI_OK; } +#ifdef MODULE_PERIPH_SPI_GPIO_MODE +int spi_init_with_gpio_mode(spi_t bus, spi_gpio_mode_t mode) +{ + assert(bus < SPI_NUMOF); + + int ret = 0; + +#ifdef CPU_FAM_STM32F1 + /* This has no effect on STM32F1 */ + return ret; +#else + ret += gpio_init(spi_config[bus].mosi_pin, mode.mosi); + ret += gpio_init(spi_config[bus].miso_pin, mode.miso); + ret += gpio_init(spi_config[bus].sclk_pin, mode.sclk); + gpio_init_af(spi_config[bus].mosi_pin, spi_config[bus].af); + gpio_init_af(spi_config[bus].miso_pin, spi_config[bus].af); + gpio_init_af(spi_config[bus].sclk_pin, spi_config[bus].af); + return ret; +#endif +} +#endif + int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { /* lock bus */