OSDN Git Service

ASoC: Intel: Skylake: Strip manifest for Broxton platform
authorVinod Koul <vinod.koul@intel.com>
Mon, 30 May 2016 12:12:58 +0000 (17:42 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 30 May 2016 17:24:41 +0000 (18:24 +0100)
Broxton firmrware comes with extended manifest so invoke
skl_dsp_strip_extended_manifest() to check and strip

Signed-off-by: Ramesh Babu <ramesh.babu@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/bxt-sst.c

index dd86232..0dd9213 100644 (file)
@@ -132,6 +132,7 @@ static int sst_transfer_fw_host_dma(struct sst_dsp *ctx)
 
 static int bxt_load_base_firmware(struct sst_dsp *ctx)
 {
+       struct firmware stripped_fw;
        struct skl_sst *skl = ctx->thread_context;
        int ret;
 
@@ -141,10 +142,19 @@ static int bxt_load_base_firmware(struct sst_dsp *ctx)
                goto sst_load_base_firmware_failed;
        }
 
-       ret = sst_bxt_prepare_fw(ctx, ctx->fw->data, ctx->fw->size);
+       /* check for extended manifest */
+       if (ctx->fw == NULL)
+               goto sst_load_base_firmware_failed;
+
+
+       stripped_fw.data = ctx->fw->data;
+       stripped_fw.size = ctx->fw->size;
+       skl_dsp_strip_extended_manifest(&stripped_fw);
+
+       ret = sst_bxt_prepare_fw(ctx, stripped_fw.data, stripped_fw.size);
        /* Retry Enabling core and ROM load. Retry seemed to help */
        if (ret < 0) {
-               ret = sst_bxt_prepare_fw(ctx, ctx->fw->data, ctx->fw->size);
+               ret = sst_bxt_prepare_fw(ctx, stripped_fw.data, stripped_fw.size);
                if (ret < 0) {
                        dev_err(ctx->dev, "Core En/ROM load fail:%d\n", ret);
                        goto sst_load_base_firmware_failed;