Signed-off-by: Jiri Vlasak <[email protected]>
---
arch/arm/src/kinetis/kinetis_spi.c | 32 ++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/arch/arm/src/kinetis/kinetis_spi.c
b/arch/arm/src/kinetis/kinetis_spi.c
index 216640f8e1..5d06ee7c60 100644
--- a/arch/arm/src/kinetis/kinetis_spi.c
+++ b/arch/arm/src/kinetis/kinetis_spi.c
@@ -1974,4 +1974,36 @@ void kinetis_spisetpcs(struct spi_dev_s *dev, int8_t
which)
}
}
+/****************************************************************************
+ * Name: spi_flush
+ *
+ * Description:
+ * Ensure that no SPI transfer happens.
+ *
+ * Input Parameters:
+ * dev - Device-specific state data
+ *
+ * Returned Value:
+ * None
+ *
+ ****************************************************************************/
+
+void spi_flush(struct spi_dev_s *dev)
+{
+ struct kinetis_spidev_s *priv = (struct kinetis_spidev_s *)dev;
+
+ /* Wait for not full TX FIFO. */
+
+ while (0 == (spi_getreg(priv, KINETIS_SPI_SR_OFFSET) & SPI_SR_TFFF));
+
+ /* Read from RX FIFO until not empty. */
+
+ while (0 != (spi_getreg(priv, KINETIS_SPI_SR_OFFSET) & SPI_SR_RXCTR_MASK))
+ {
+ spi_getreg(priv, KINETIS_SPI_POPR_OFFSET);
+ }
+
+ spi_write_status(priv, SPI_SR_RFDF);
+}
+
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
--
2.47.3