]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
spi: rockchip-sfc: Optimize the judgment mechanism completed by the controller
authorJon Lin <jon.lin@rock-chips.com>
Tue, 3 Dec 2024 01:35:13 +0000 (09:35 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 4 Dec 2024 13:44:17 +0000 (13:44 +0000)
There is very little data left in fifo, and the controller will
complete the transmission in a short period of time, so
use readl_poll_timeout() for busy wait 10us to accelerate response.

Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
Link: https://patch.msgid.link/20241203013513.2628810-1-jon.lin@rock-chips.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip-sfc.c

index 138508d2c736692eb804868000ac947bd613cddf..14f5b93460504d6c94f992658b20d24f3a809429 100644 (file)
@@ -472,6 +472,16 @@ static int rockchip_sfc_xfer_done(struct rockchip_sfc *sfc, u32 timeout_us)
        int ret = 0;
        u32 status;
 
+       /*
+        * There is very little data left in fifo, and the controller will
+        * complete the transmission in a short period of time.
+        */
+       ret = readl_poll_timeout(sfc->regbase + SFC_SR, status,
+                                !(status & SFC_SR_IS_BUSY),
+                                0, 10);
+       if (!ret)
+               return 0;
+
        ret = readl_poll_timeout(sfc->regbase + SFC_SR, status,
                                 !(status & SFC_SR_IS_BUSY),
                                 20, timeout_us);