Signed-off-by: Jiri Vlasak <[email protected]>
---
arch/arm/src/kinetis/kinetis_spi.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/arm/src/kinetis/kinetis_spi.c
b/arch/arm/src/kinetis/kinetis_spi.c
index 98ddc9766f..4daccc58e7 100644
--- a/arch/arm/src/kinetis/kinetis_spi.c
+++ b/arch/arm/src/kinetis/kinetis_spi.c
@@ -136,7 +136,7 @@ static inline uint16_t spi_readword(struct kinetis_spidev_s
*priv);
static inline void spi_writeword(struct kinetis_spidev_s *priv,
uint16_t word, bool first_word);
-static inline void spi_run(struct kinetis_spidev_s *priv,
+static inline bool spi_run(struct kinetis_spidev_s *priv,
bool enable);
static inline void spi_write_control(struct kinetis_spidev_s *priv,
uint32_t control);
@@ -642,18 +642,23 @@ static inline uint16_t spi_readword(struct
kinetis_spidev_s *priv)
* enable - True clears HALT
*
* Returned Value:
- * Last enable setting
+ * Was SPI halted before call to spi_run?
*
****************************************************************************/
-void inline spi_run(struct kinetis_spidev_s *priv, bool enable)
+bool inline spi_run(struct kinetis_spidev_s *priv, bool enable)
{
uint32_t regval;
+ bool last;
regval = spi_getreg(priv, KINETIS_SPI_MCR_OFFSET);
+ last = regval & SPI_MCR_HALT;
+
regval &= ~SPI_MCR_HALT;
regval |= enable ? 0 : SPI_MCR_HALT;
spi_putreg(priv, KINETIS_SPI_MCR_OFFSET, regval);
+
+ return last;
}
/****************************************************************************
--
2.47.3