diff options
author | Vinod Koul <vinod.koul@intel.com> | 2015-02-24 01:09:45 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-02-24 03:00:35 -0500 |
commit | 9308d1456e30e374d93957e3376a09370be9dc52 (patch) | |
tree | 0128dee3f891ad64dfaffbde7eb2884c86e8e540 /sound/soc | |
parent | 4a8448d4289d7210053a43f9f21e42929beb159b (diff) |
ASoC: Intel: Move the fw download to power_control
Thus removing the runtime_resume handler.
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/intel/sst/sst.c | 18 | ||||
-rw-r--r-- | sound/soc/intel/sst/sst_drv_interface.c | 27 |
2 files changed, 24 insertions, 21 deletions
diff --git a/sound/soc/intel/sst/sst.c b/sound/soc/intel/sst/sst.c index 8f938112a01f..4d8f73ac5dd9 100644 --- a/sound/soc/intel/sst/sst.c +++ b/sound/soc/intel/sst/sst.c | |||
@@ -492,21 +492,6 @@ iram: | |||
492 | return ret; | 492 | return ret; |
493 | } | 493 | } |
494 | 494 | ||
495 | static int intel_sst_runtime_resume(struct device *dev) | ||
496 | { | ||
497 | int ret = 0; | ||
498 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); | ||
499 | |||
500 | if (ctx->sst_state == SST_RESET) { | ||
501 | ret = sst_load_fw(ctx); | ||
502 | if (ret) { | ||
503 | dev_err(dev, "FW download fail %d\n", ret); | ||
504 | sst_set_fw_state_locked(ctx, SST_RESET); | ||
505 | } | ||
506 | } | ||
507 | return ret; | ||
508 | } | ||
509 | |||
510 | static int intel_sst_resume(struct device *dev) | 495 | static int intel_sst_resume(struct device *dev) |
511 | { | 496 | { |
512 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); | 497 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); |
@@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev) | |||
515 | struct sst_block *block; | 500 | struct sst_block *block; |
516 | 501 | ||
517 | if (!fw_save) | 502 | if (!fw_save) |
518 | return intel_sst_runtime_resume(dev); | 503 | return 0; |
519 | 504 | ||
520 | sst_set_fw_state_locked(ctx, SST_FW_LOADING); | 505 | sst_set_fw_state_locked(ctx, SST_FW_LOADING); |
521 | 506 | ||
@@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = { | |||
560 | .suspend = intel_sst_suspend, | 545 | .suspend = intel_sst_suspend, |
561 | .resume = intel_sst_resume, | 546 | .resume = intel_sst_resume, |
562 | .runtime_suspend = intel_sst_runtime_suspend, | 547 | .runtime_suspend = intel_sst_runtime_suspend, |
563 | .runtime_resume = intel_sst_runtime_resume, | ||
564 | }; | 548 | }; |
565 | EXPORT_SYMBOL_GPL(intel_sst_pm); | 549 | EXPORT_SYMBOL_GPL(intel_sst_pm); |
diff --git a/sound/soc/intel/sst/sst_drv_interface.c b/sound/soc/intel/sst/sst_drv_interface.c index 5d56fcdd58d8..549af7d7f6d0 100644 --- a/sound/soc/intel/sst/sst_drv_interface.c +++ b/sound/soc/intel/sst/sst_drv_interface.c | |||
@@ -138,12 +138,31 @@ int sst_get_stream(struct intel_sst_drv *ctx, | |||
138 | static int sst_power_control(struct device *dev, bool state) | 138 | static int sst_power_control(struct device *dev, bool state) |
139 | { | 139 | { |
140 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); | 140 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); |
141 | int ret = 0; | ||
141 | 142 | ||
142 | dev_dbg(ctx->dev, "state:%d", state); | 143 | if (state == true) { |
143 | if (state == true) | 144 | ret = pm_runtime_get_sync(dev); |
144 | return pm_runtime_get_sync(dev); | 145 | dev_dbg(ctx->dev, "Enable: pm usage count: %d\n", |
145 | else | 146 | atomic_read(&dev->power.usage_count)); |
147 | if (ret < 0) { | ||
148 | dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret); | ||
149 | return ret; | ||
150 | } | ||
151 | if ((ctx->sst_state == SST_RESET) && | ||
152 | (atomic_read(&dev->power.usage_count) == 1)) { | ||
153 | ret = sst_load_fw(ctx); | ||
154 | if (ret) { | ||
155 | dev_err(dev, "FW download fail %d\n", ret); | ||
156 | sst_set_fw_state_locked(ctx, SST_RESET); | ||
157 | ret = sst_pm_runtime_put(ctx); | ||
158 | } | ||
159 | } | ||
160 | } else { | ||
161 | dev_dbg(ctx->dev, "Disable: pm usage count: %d\n", | ||
162 | atomic_read(&dev->power.usage_count)); | ||
146 | return sst_pm_runtime_put(ctx); | 163 | return sst_pm_runtime_put(ctx); |
164 | } | ||
165 | return ret; | ||
147 | } | 166 | } |
148 | 167 | ||
149 | /* | 168 | /* |