]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ASoC: Intel: Skylake: Modify arguments to reuse module transfer function
authorG Kranthi <gudishax.kranthikumar@intel.com>
Tue, 25 Apr 2017 06:48:21 +0000 (12:18 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 26 Apr 2017 14:47:41 +0000 (15:47 +0100)
Kabylake also uses code loader dma for module load and library load.
skl_transfer_module can be reused. Modify the arguments to include
library index to be passed to lib load ipc and module/lib check to use
correct ipc for lib/module load.

Signed-off-by: G Kranthi <gudishax.kranthikumar@intel.com>
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl-sst.c

index 4fdd503a837c53444b9dd3b60334bf1664b42fe7..b4c3b5c631153296179d1ffd69099d2f4337f403 100644 (file)
@@ -325,7 +325,7 @@ static struct skl_module_table *skl_module_get_from_id(
 }
 
 static int skl_transfer_module(struct sst_dsp *ctx, const void *data,
-                               u32 size, u16 mod_id)
+                       u32 size, u16 mod_id, u8 table_id, bool is_module)
 {
        int ret, bytes_left, curr_pos;
        struct skl_sst *skl = ctx->thread_context;
@@ -335,10 +335,12 @@ static int skl_transfer_module(struct sst_dsp *ctx, const void *data,
        if (bytes_left < 0)
                return bytes_left;
 
-       ret = skl_ipc_load_modules(&skl->ipc, SKL_NUM_MODULES, &mod_id);
-       if (ret < 0) {
-               dev_err(ctx->dev, "Failed to Load module: %d\n", ret);
-               goto out;
+       if (is_module) { /* load module */
+               ret = skl_ipc_load_modules(&skl->ipc, SKL_NUM_MODULES, &mod_id);
+               if (ret < 0) {
+                       dev_err(ctx->dev, "Failed to Load module: %d\n", ret);
+                       goto out;
+               }
        }
 
        /*
@@ -393,7 +395,8 @@ static int skl_load_module(struct sst_dsp *ctx, u16 mod_id, u8 *guid)
 
        if (!module_entry->usage_cnt) {
                ret = skl_transfer_module(ctx, module_entry->mod_info->fw->data,
-                               module_entry->mod_info->fw->size, mod_id);
+                               module_entry->mod_info->fw->size,
+                               mod_id, 0, true);
                if (ret < 0) {
                        dev_err(ctx->dev, "Failed to Load module\n");
                        return ret;