spi: rockchip: enable autosuspend feature
authorAlexander Kochetkov <al.kochet@gmail.com>
Fri, 16 Oct 2020 08:50:14 +0000 (11:50 +0300)
committerMark Brown <broonie@kernel.org>
Mon, 26 Oct 2020 23:29:04 +0000 (23:29 +0000)
If SPI is used for periodic polling any sensor, significant delays
sometimes appear. Switching on module clocks during resume lead to delays.
Enabling autosuspend mode causes the controller to not suspend between
SPI transfers and the delays disappear.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Link: https://lore.kernel.org/r/20201016085014.31667-1-al.kochet@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip.c

index 75a8a94..09d8e92 100644 (file)
 #define ROCKCHIP_SPI_VER2_TYPE1                        0x05EC0002
 #define ROCKCHIP_SPI_VER2_TYPE2                        0x00110002
 
+#define ROCKCHIP_AUTOSUSPEND_TIMEOUT           2000
+
 struct rockchip_spi {
        struct device *dev;
 
@@ -715,6 +717,8 @@ static int rockchip_spi_probe(struct platform_device *pdev)
                goto err_disable_spiclk;
        }
 
+       pm_runtime_set_autosuspend_delay(&pdev->dev, ROCKCHIP_AUTOSUSPEND_TIMEOUT);
+       pm_runtime_use_autosuspend(&pdev->dev);
        pm_runtime_set_active(&pdev->dev);
        pm_runtime_enable(&pdev->dev);