diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2013-03-26 06:08:52 +0000 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2013-04-02 21:18:39 +0800 |
commit | 51d45d25948bdf7422958b92a2d91dc703b1a4cc (patch) | |
tree | 9b512acd2ca71538950913ed9af13d3579a3302d /drivers/thermal/rcar_thermal.c | |
parent | 1dc20828e674a781635286072bae909dc4e5c377 (diff) | |
download | talos-obmc-linux-51d45d25948bdf7422958b92a2d91dc703b1a4cc.tar.gz talos-obmc-linux-51d45d25948bdf7422958b92a2d91dc703b1a4cc.zip |
thermal: rcar: add pm_runtime_xxx() support
Current rcar_thermal() didn't care about own power.
Without this patch, rcar_thermal doesn't work on APE6 board
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Diffstat (limited to 'drivers/thermal/rcar_thermal.c')
-rw-r--r-- | drivers/thermal/rcar_thermal.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c index 4d6095b9f9df..8d7edd4c8228 100644 --- a/drivers/thermal/rcar_thermal.c +++ b/drivers/thermal/rcar_thermal.c @@ -24,6 +24,7 @@ #include <linux/io.h> #include <linux/module.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/reboot.h> #include <linux/slab.h> #include <linux/spinlock.h> @@ -377,6 +378,9 @@ static int rcar_thermal_probe(struct platform_device *pdev) spin_lock_init(&common->lock); common->dev = dev; + pm_runtime_enable(dev); + pm_runtime_get_sync(dev); + irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (irq) { int ret; @@ -465,12 +469,16 @@ error_unregister: rcar_thermal_irq_disable(priv); } + pm_runtime_put_sync(dev); + pm_runtime_disable(dev); + return ret; } static int rcar_thermal_remove(struct platform_device *pdev) { struct rcar_thermal_common *common = platform_get_drvdata(pdev); + struct device *dev = &pdev->dev; struct rcar_thermal_priv *priv; rcar_thermal_for_each_priv(priv, common) { @@ -481,6 +489,9 @@ static int rcar_thermal_remove(struct platform_device *pdev) platform_set_drvdata(pdev, NULL); + pm_runtime_put_sync(dev); + pm_runtime_disable(dev); + return 0; } |