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

Reply via email to