]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spi: synquacer: wait until slave is deselected
authorMasahisa Kojima <masahisa.kojima@linaro.org>
Tue, 17 May 2022 08:41:37 +0000 (17:41 +0900)
committerTom Rini <trini@konsulko.com>
Fri, 10 Jun 2022 17:37:32 +0000 (13:37 -0400)
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@linaro.org>
Signed-off-by: Satoru Okamoto <okamoto.satoru@socionext.com>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
drivers/spi/spi-synquacer.c

index 62f85f03353c968e06fa94158e3de76539fa66eb..f1422cf893e7a6d394510175fc04ee56176da7f3 100644 (file)
@@ -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)))
+                       ;
        }
 }