From: Keith Packard Date: Tue, 16 Jul 2019 18:07:27 +0000 (-0700) Subject: altos/stmf0: Allow SPI to be powered down when idle if desired X-Git-Tag: 1.9.1~1^2~59 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=40624256be70088d7608742b71e1241d95a7fcdf altos/stmf0: Allow SPI to be powered down when idle if desired Set SPI_1_POWER_MANAGE and/or SPI_2_POWER_MANAGE to have the spi blocks powered down when not in use. Signed-off-by: Keith Packard --- diff --git a/src/stmf0/ao_spi_stm.c b/src/stmf0/ao_spi_stm.c index 5e76d6c3..d83f0658 100644 --- a/src/stmf0/ao_spi_stm.c +++ b/src/stmf0/ao_spi_stm.c @@ -412,6 +412,18 @@ ao_spi_config(uint8_t spi_index, uint32_t speed) uint8_t id = AO_SPI_INDEX(spi_index); struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; + switch (id) { +#if SPI_1_POWER_MANAGE + case 0: + stm_rcc.apb2enr |= (1 << STM_RCC_APB2ENR_SPI1EN); + break; +#endif +#if SPI_2_POWER_MANAGE + case 1: + stm_rcc.apb1enr |= (1 << STM_RCC_APB1ENR_SPI2EN); + break; +#endif + } if (spi_index != ao_spi_index[id]) { /* Disable old config @@ -469,6 +481,18 @@ ao_spi_put(uint8_t spi_index) struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; stm_spi->cr1 = 0; + switch (id) { +#if SPI_1_POWER_MANAGE + case 0: + stm_rcc.apb2enr &= ~(1 << STM_RCC_APB2ENR_SPI1EN); + break; +#endif +#if SPI_2_POWER_MANAGE + case 1: + stm_rcc.apb1enr &= ~(1 << STM_RCC_APB1ENR_SPI2EN); + break; +#endif + } ao_mutex_put(&ao_spi_mutex[id]); }