Commit 9308d145 authored by Vinod Koul's avatar Vinod Koul Committed by Mark Brown

ASoC: Intel: Move the fw download to power_control

Thus removing the runtime_resume handler.
Signed-off-by: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4a8448d4
...@@ -492,21 +492,6 @@ static int intel_sst_suspend(struct device *dev) ...@@ -492,21 +492,6 @@ static int intel_sst_suspend(struct device *dev)
return ret; return ret;
} }
static int intel_sst_runtime_resume(struct device *dev)
{
int ret = 0;
struct intel_sst_drv *ctx = dev_get_drvdata(dev);
if (ctx->sst_state == SST_RESET) {
ret = sst_load_fw(ctx);
if (ret) {
dev_err(dev, "FW download fail %d\n", ret);
sst_set_fw_state_locked(ctx, SST_RESET);
}
}
return ret;
}
static int intel_sst_resume(struct device *dev) static int intel_sst_resume(struct device *dev)
{ {
struct intel_sst_drv *ctx = dev_get_drvdata(dev); struct intel_sst_drv *ctx = dev_get_drvdata(dev);
...@@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev) ...@@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev)
struct sst_block *block; struct sst_block *block;
if (!fw_save) if (!fw_save)
return intel_sst_runtime_resume(dev); return 0;
sst_set_fw_state_locked(ctx, SST_FW_LOADING); sst_set_fw_state_locked(ctx, SST_FW_LOADING);
...@@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = { ...@@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = {
.suspend = intel_sst_suspend, .suspend = intel_sst_suspend,
.resume = intel_sst_resume, .resume = intel_sst_resume,
.runtime_suspend = intel_sst_runtime_suspend, .runtime_suspend = intel_sst_runtime_suspend,
.runtime_resume = intel_sst_runtime_resume,
}; };
EXPORT_SYMBOL_GPL(intel_sst_pm); EXPORT_SYMBOL_GPL(intel_sst_pm);
...@@ -138,12 +138,31 @@ int sst_get_stream(struct intel_sst_drv *ctx, ...@@ -138,12 +138,31 @@ int sst_get_stream(struct intel_sst_drv *ctx,
static int sst_power_control(struct device *dev, bool state) static int sst_power_control(struct device *dev, bool state)
{ {
struct intel_sst_drv *ctx = dev_get_drvdata(dev); struct intel_sst_drv *ctx = dev_get_drvdata(dev);
int ret = 0;
dev_dbg(ctx->dev, "state:%d", state); if (state == true) {
if (state == true) ret = pm_runtime_get_sync(dev);
return pm_runtime_get_sync(dev); dev_dbg(ctx->dev, "Enable: pm usage count: %d\n",
else atomic_read(&dev->power.usage_count));
if (ret < 0) {
dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret);
return ret;
}
if ((ctx->sst_state == SST_RESET) &&
(atomic_read(&dev->power.usage_count) == 1)) {
ret = sst_load_fw(ctx);
if (ret) {
dev_err(dev, "FW download fail %d\n", ret);
sst_set_fw_state_locked(ctx, SST_RESET);
ret = sst_pm_runtime_put(ctx);
}
}
} else {
dev_dbg(ctx->dev, "Disable: pm usage count: %d\n",
atomic_read(&dev->power.usage_count));
return sst_pm_runtime_put(ctx); return sst_pm_runtime_put(ctx);
}
return ret;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment