mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: targets/TARGET_Silicon_Labs/TARGET_EFM32/spi_api.c
- Revision:
- 163:74e0ce7f98e8
- Parent:
- 150:02e0a0aed4ec
- Child:
- 167:e84263d55307
--- a/targets/TARGET_Silicon_Labs/TARGET_EFM32/spi_api.c Wed Apr 12 16:21:43 2017 +0100 +++ b/targets/TARGET_Silicon_Labs/TARGET_EFM32/spi_api.c Fri Apr 28 14:04:18 2017 +0100 @@ -213,10 +213,12 @@ obj->spi.spi->ROUTELOC0 &= ~_USART_ROUTELOC0_CSLOC_MASK; obj->spi.spi->ROUTELOC0 |= pin_location(cs, PinMap_SPI_MOSI)<<_USART_ROUTELOC0_CSLOC_SHIFT; } + obj->spi.location = obj->spi.spi->ROUTELOC0; + obj->spi.route = route; obj->spi.spi->ROUTEPEN = route; } #else - uint32_t route = USART_ROUTE_CLKPEN | (obj->spi.location << _USART_ROUTE_LOCATION_SHIFT); + uint32_t route = USART_ROUTE_CLKPEN; if (mosi != NC) { route |= USART_ROUTE_TXPEN; @@ -227,7 +229,9 @@ if (!obj->spi.master) { route |= USART_ROUTE_CSPEN; } + route |= obj->spi.location << _USART_ROUTE_LOCATION_SHIFT; obj->spi.spi->ROUTE = route; + obj->spi.route = route; } #endif void spi_enable(spi_t *obj, uint8_t enable) @@ -324,14 +328,6 @@ default: clockMode = usartClockMode0; } - - //save state -#ifdef _USART_ROUTEPEN_RESETVALUE - uint32_t route = obj->spi.spi->ROUTEPEN; - uint32_t loc = obj->spi.spi->ROUTELOC0; -#else - uint32_t route = obj->spi.spi->ROUTE; -#endif uint32_t iflags = obj->spi.spi->IEN; bool enabled = (obj->spi.spi->STATUS & (USART_STATUS_RXENS | USART_STATUS_TXENS)) != 0; @@ -339,10 +335,10 @@ //restore state #ifdef _USART_ROUTEPEN_RESETVALUE - obj->spi.spi->ROUTEPEN = route; - obj->spi.spi->ROUTELOC0 = loc; + obj->spi.spi->ROUTEPEN = obj->spi.route; + obj->spi.spi->ROUTELOC0 = obj->spi.location; #else - obj->spi.spi->ROUTE = route; + obj->spi.spi->ROUTE = obj->spi.route; #endif obj->spi.spi->IEN = iflags;