2019-10-04 10:09:08 +08:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: "Ho, Yu Xin" <yu.xin.ho@intel.com>
|
|
|
|
Date: Thu, 25 Oct 2018 17:56:20 +0800
|
|
|
|
Subject: [PATCH] ASoC: Intel: Skylake: Recover BXT FW on DSP boot timeout
|
|
|
|
error
|
|
|
|
|
|
|
|
When DSP boots with timeout error, reinitialize, transfer
|
|
|
|
and boot firmware to recover audio.
|
|
|
|
|
|
|
|
Change-Id: I9c17153743cb61c165ca623fc5b162bcfe7d66ab
|
|
|
|
Signed-off-by: Ho, Yu Xin <yu.xin.ho@intel.com>
|
|
|
|
Signed-off-by: Szymon Mielczarek <szymonx.mielczarek@intel.com>
|
|
|
|
Signed-off-by: Mateusz Gorski <mateusz.gorski@intel.com>
|
|
|
|
Tested-by: gkblditp <gkblditp@intel.com>
|
|
|
|
Tested-by: Harlozinski, Pawel <pawel.harlozinski@intel.com>
|
|
|
|
Reviewed-by: Harlozinski, Pawel <pawel.harlozinski@intel.com>
|
|
|
|
Reviewed-by: Lewandowski, Gustaw <gustaw.lewandowski@intel.com>
|
|
|
|
Tracked-On: OAM-85035
|
|
|
|
---
|
|
|
|
sound/soc/intel/skylake/bxt-sst.c | 15 ++++++++++-----
|
|
|
|
1 file changed, 10 insertions(+), 5 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/sound/soc/intel/skylake/bxt-sst.c b/sound/soc/intel/skylake/bxt-sst.c
|
2020-10-27 02:14:06 +08:00
|
|
|
index 7e20ba424efa..99663de91a71 100644
|
2019-10-04 10:09:08 +08:00
|
|
|
--- a/sound/soc/intel/skylake/bxt-sst.c
|
|
|
|
+++ b/sound/soc/intel/skylake/bxt-sst.c
|
|
|
|
@@ -589,13 +589,18 @@ static int bxt_set_dsp_D0(struct sst_dsp *ctx, unsigned int core_id)
|
|
|
|
/* If core 1 was turned on for booting core 0, turn it off */
|
|
|
|
skl_dsp_core_power_down(ctx, SKL_DSP_CORE_MASK(1));
|
|
|
|
if (ret == 0) {
|
|
|
|
- dev_err(ctx->dev, "%s: DSP boot timeout\n", __func__);
|
|
|
|
- dev_err(ctx->dev, "Error code=0x%x: FW status=0x%x\n",
|
|
|
|
+ dev_warn(ctx->dev,
|
|
|
|
+ "DSP boot timeout: Error code=0x%x: FW status=0x%x\n",
|
|
|
|
sst_dsp_shim_read(ctx, BXT_ADSP_ERROR_CODE),
|
|
|
|
sst_dsp_shim_read(ctx, BXT_ADSP_FW_STATUS));
|
|
|
|
- dev_err(ctx->dev, "Failed to set core0 to D0 state\n");
|
|
|
|
- ret = -EIO;
|
|
|
|
- goto err;
|
|
|
|
+
|
|
|
|
+ ret = skl_sst_init_fw(ctx->dev, skl);
|
|
|
|
+ dev_warn(ctx->dev, "Reload fw status: %d\n", ret);
|
|
|
|
+ if (ret < 0) {
|
|
|
|
+ dev_err(ctx->dev, "Failed to set core0 to D0 state\n");
|
|
|
|
+ ret = -EIO;
|
|
|
|
+ goto err;
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
|
|
|
https://clearlinux.org
|
|
|
|
|