diff options
author | Phil Edworthy <phil.edworthy@renesas.com> | 2019-09-18 09:04:35 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-10-01 12:32:56 +0100 |
commit | 1e695983251029dc0b0fc516290077539df400ff (patch) | |
tree | 96e042ff6a0a78fbb766938ef679a963a61eabce /drivers/spi/spi-dw.c | |
parent | 47cf13bc763c891c6192184c5e5aa8c1b331b2ff (diff) | |
download | linux-stable-1e695983251029dc0b0fc516290077539df400ff.tar.gz linux-stable-1e695983251029dc0b0fc516290077539df400ff.tar.bz2 linux-stable-1e695983251029dc0b0fc516290077539df400ff.zip |
spi: dw: Add basic runtime PM support
Enable runtime PM so that the clock used to access the registers in the
peripheral is turned on using a clock domain.
Signed-off-by: Phil Edworthy <phil.edworthy@renesas.com>
Signed-off-by: Gareth Williams <gareth.williams.jx@renesas.com>
Link: https://lore.kernel.org/r/1568793876-9009-4-git-send-email-gareth.williams.jx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-dw.c')
-rw-r--r-- | drivers/spi/spi-dw.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index 9a49e073e8b7..54ed6eb3e252 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/highmem.h> #include <linux/delay.h> +#include <linux/pm_runtime.h> #include <linux/slab.h> #include <linux/spi/spi.h> @@ -493,10 +494,13 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws) master->dev.of_node = dev->of_node; master->dev.fwnode = dev->fwnode; master->flags = SPI_MASTER_GPIO_SS; + master->auto_runtime_pm = true; if (dws->set_cs) master->set_cs = dws->set_cs; + pm_runtime_enable(dev); + /* Basic HW init */ spi_hw_init(dev, dws); @@ -525,6 +529,7 @@ err_dma_exit: spi_enable_chip(dws, 0); free_irq(dws->irq, master); err_free_master: + pm_runtime_disable(dev); spi_controller_put(master); return ret; } @@ -539,6 +544,9 @@ void dw_spi_remove_host(struct dw_spi *dws) spi_shutdown_chip(dws); + if (dws->master) + pm_runtime_disable(&dws->master->dev); + free_irq(dws->irq, dws->master); } EXPORT_SYMBOL_GPL(dw_spi_remove_host); |