mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-20 08:40:47 +00:00
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>
This commit is contained in:
parent
5518af9f97
commit
1fb344a33a
@ -446,6 +446,7 @@ static int bxt_set_dsp_D0(struct sst_dsp *ctx, unsigned int core_id)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
skl->cores.state[core_id] = SKL_DSP_RUNNING;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user