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>
This commit is contained in:
parent
4a8448d428
commit
9308d1456e
2 changed files with 24 additions and 21 deletions
|
@ -492,21 +492,6 @@ iram:
|
||||||
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)
|
||||||
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 = {
|
||||||
.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,
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue