[PATCH 2/4] spi: synquacer: wait until slave is deselected

Masahisa Kojima masahisa.kojima at linaro.org
Tue May 17 10:41:37 CEST 2022


synquacer_cs_set() function does not wait the chip select
is deasserted when the driver sets the DMSTOP to deselect
the slave.
This commit checks the Slave Select Released(SRS) bit to wait
until the slave is deselected.

Signed-off-by: Masahisa Kojima <masahisa.kojima at linaro.org>
Signed-off-by: Satoru Okamoto <okamoto.satoru at socionext.com>
---
 drivers/spi/spi-synquacer.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/spi/spi-synquacer.c b/drivers/spi/spi-synquacer.c
index 62f85f0335..f1422cf893 100644
--- a/drivers/spi/spi-synquacer.c
+++ b/drivers/spi/spi-synquacer.c
@@ -46,7 +46,9 @@
 #define RXE		0x24
 #define RXC		0x28
 #define TFLETE		4
+#define TSSRS		6
 #define RFMTE		5
+#define RSSRS		6
 
 #define FAULTF		0x2c
 #define FAULTC		0x30
@@ -170,6 +172,11 @@ static void synquacer_cs_set(struct synquacer_spi_priv *priv, bool active)
 			priv->rx_words = 16;
 			read_fifo(priv);
 		}
+
+		/* wait until slave is deselected */
+		while (!(readl(priv->base + TXF) & BIT(TSSRS)) ||
+		       !(readl(priv->base + RXF) & BIT(RSSRS)))
+			;
 	}
 }
 
-- 
2.17.1



More information about the U-Boot mailing list