[2/3] spi: spi-geni-qcom: Set an autosuspend delay of 250 ms
diff mbox series

Message ID 20200701174506.2.I9b8f6bb1e7e6d8847e2ed2cf854ec55678db427f@changeid
State New
Headers show
Series
  • spi: spi-geni-qcom: Avoid a bunch of per-transfer overhead
Related show

Commit Message

Douglas Anderson July 2, 2020, 12:45 a.m. UTC
In commit 0e3b8a81f5df ("spi: spi-geni-qcom: Add interconnect
support") the spi_geni_runtime_suspend() and spi_geni_runtime_resume()
became a bit slower.  Measuring on my hardware I see numbers in the
hundreds of microseconds now.

Let's use autosuspend to help avoid some of the overhead.  Now if
we're doing a bunch of transfers we won't need to be constantly
chruning.

The number 250 ms for the autosuspend delay was picked a bit
arbitrarily, so if someone has measurements showing a better value we
could easily change this.

Fixes: 0e3b8a81f5df ("spi: spi-geni-qcom: Add interconnect support")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

 drivers/spi/spi-geni-qcom.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Akash Asthana July 7, 2020, 10:18 a.m. UTC | #1
On 7/2/2020 6:15 AM, Douglas Anderson wrote:
> In commit 0e3b8a81f5df ("spi: spi-geni-qcom: Add interconnect
> support") the spi_geni_runtime_suspend() and spi_geni_runtime_resume()
> became a bit slower.  Measuring on my hardware I see numbers in the
> hundreds of microseconds now.
>
> Let's use autosuspend to help avoid some of the overhead.  Now if
> we're doing a bunch of transfers we won't need to be constantly
> chruning.
>
> The number 250 ms for the autosuspend delay was picked a bit
> arbitrarily, so if someone has measurements showing a better value we
> could easily change this.

Reviewed-by: Akash Asthana<akashast@codeaurora.org>

Patch
diff mbox series

diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c
index bb4cdda2dec8..f51279608fc7 100644
--- a/drivers/spi/spi-geni-qcom.c
+++ b/drivers/spi/spi-geni-qcom.c
@@ -595,6 +595,8 @@  static int spi_geni_probe(struct platform_device *pdev)
 
 	init_completion(&mas->xfer_done);
 	spin_lock_init(&mas->lock);
+	pm_runtime_use_autosuspend(&pdev->dev);
+	pm_runtime_set_autosuspend_delay(&pdev->dev, 250);
 	pm_runtime_enable(dev);
 
 	ret = geni_icc_get(&mas->se, NULL);