ASoC: tegra: add runtime PM to resume functions
authorStephen Warren <swarren@nvidia.com>
Tue, 4 Jun 2013 18:58:14 +0000 (12:58 -0600)
committerMark Brown <broonie@linaro.org>
Tue, 4 Jun 2013 19:47:11 +0000 (20:47 +0100)
Tegra HW needs clocks etc. active when touching registers. Make sure they
are active during resume, by calling pm_runtime_get_sync() before touching
HW.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/tegra/tegra30_ahub.c
sound/soc/tegra/tegra30_i2s.c

index 0f4787c24e43e67bddcf9c3bbee8c4b551e5823c..d554d46d08b550788a1bd0ad706f8ed7948a318a 100644 (file)
@@ -640,8 +640,12 @@ static int tegra30_ahub_resume(struct device *dev)
 {
        int ret;
 
+       ret = pm_runtime_get_sync(dev);
+       if (ret < 0)
+               return ret;
        ret = regcache_sync(ahub->regmap_ahub);
        ret |= regcache_sync(ahub->regmap_apbif);
+       pm_runtime_put(dev);
 
        return ret;
 }
index bd0ebc09c8be76f743561387379dffb278505322..d04146cad61f4f2dd0227815d0f25970e22e4cae 100644 (file)
@@ -527,8 +527,15 @@ static int tegra30_i2s_suspend(struct device *dev)
 static int tegra30_i2s_resume(struct device *dev)
 {
        struct tegra30_i2s *i2s = dev_get_drvdata(dev);
+       int ret;
 
-       return regcache_sync(i2s->regmap);
+       ret = pm_runtime_get_sync(dev);
+       if (ret < 0)
+               return ret;
+       ret = regcache_sync(i2s->regmap);
+       pm_runtime_put(dev);
+
+       return ret;
 }
 #endif
 
This page took 0.030653 seconds and 5 git commands to generate.