diff options
author | Jeeja KP <jeeja.kp@intel.com> | 2017-03-13 19:41:26 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-03-15 20:28:01 +0300 |
commit | 1fb344a33a2f99378128281df97770e2c5182c2d (patch) | |
tree | 8a053286b60a713f9371068d59d63234816645fe /sound/soc/intel/skylake/skl-sst-dsp.c | |
parent | 5518af9f97940e84de6a4bf6fed212a95278f818 (diff) | |
download | linux-1fb344a33a2f99378128281df97770e2c5182c2d.tar.xz |
ASoC: Intel: bxtn: Update DSP core state in D0
In system suspend, firmware needs to be re-downloaded as IMR is cleared.
When firmware is downloaded in D0, core state is not set to running
state causing instability with subsequent D0-D3 cycles.
So set the core state correctly during D0 and check the DSP core state
if not in reset to set the DSP to D3.
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel/skylake/skl-sst-dsp.c')
-rw-r--r-- | sound/soc/intel/skylake/skl-sst-dsp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sound/soc/intel/skylake/skl-sst-dsp.c b/sound/soc/intel/skylake/skl-sst-dsp.c index c3deefab65d6..08332723c700 100644 --- a/sound/soc/intel/skylake/skl-sst-dsp.c +++ b/sound/soc/intel/skylake/skl-sst-dsp.c @@ -355,12 +355,13 @@ int skl_dsp_get_core(struct sst_dsp *ctx, unsigned int core_id) ret = ctx->fw_ops.set_state_D0(ctx, core_id); if (ret < 0) { dev_err(ctx->dev, "unable to get core%d\n", core_id); - return ret; + goto out; } } skl->cores.usage_count[core_id]++; +out: dev_dbg(ctx->dev, "core id %d state %d usage_count %d\n", core_id, skl->cores.state[core_id], skl->cores.usage_count[core_id]); @@ -379,7 +380,8 @@ int skl_dsp_put_core(struct sst_dsp *ctx, unsigned int core_id) return -EINVAL; } - if (--skl->cores.usage_count[core_id] == 0) { + if ((--skl->cores.usage_count[core_id] == 0) && + (skl->cores.state[core_id] != SKL_DSP_RESET)) { ret = ctx->fw_ops.set_state_D3(ctx, core_id); if (ret < 0) { dev_err(ctx->dev, "unable to put core %d: %d\n", |