OSDN Git Service

spi: spi-geni-qcom: Use the FIFO even more
authorDouglas Anderson <dianders@chromium.org>
Sat, 12 Sep 2020 21:07:59 +0000 (14:07 -0700)
committerMark Brown <broonie@kernel.org>
Mon, 14 Sep 2020 14:50:11 +0000 (15:50 +0100)
In commit 902481a78ee4 ("spi: spi-geni-qcom: Actually use our FIFO") I
explained that the maximum size we could program the FIFO was
"mas->tx_fifo_depth - 3" but that I chose "mas->tx_fifo_depth()"
because I was worried about decreased bandwidth.

Since that time:
* All the interconnect patches have landed, making things run at the
  proper speed.
* I've done more measurements.

This lets me confirm that there's really no downside of using the FIFO
more.  Specifically I did "flashrom -p ec -r /tmp/foo.bin" on a
Chromebook and averaged over several runs.

Before: It took 6.66 seconds and 59669 interrupts fired.
After:  It took 6.66 seconds and 47992 interrupts fired.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20200912140730.1.Ie67fa32009b94702d56232c064f1d89065ee8836@changeid
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-geni-qcom.c

index 0dc3f4c..7f0bf0d 100644 (file)
@@ -308,7 +308,7 @@ static int spi_geni_init(struct spi_geni_master *mas)
         * Hardware programming guide suggests to configure
         * RX FIFO RFR level to fifo_depth-2.
         */
-       geni_se_init(se, mas->tx_fifo_depth / 2, mas->tx_fifo_depth - 2);
+       geni_se_init(se, mas->tx_fifo_depth - 3, mas->tx_fifo_depth - 2);
        /* Transmit an entire FIFO worth of data per IRQ */
        mas->tx_wm = 1;
        ver = geni_se_get_qup_hw_version(se);