]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ASoC: Intel: Skylake: Release topology when we are done with it
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Tue, 27 Aug 2019 14:17:11 +0000 (16:17 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 27 Aug 2019 18:26:11 +0000 (19:26 +0100)
Currently topology is kept in memory while driver is running. It's
unnecessary, as it's only needed during parsing.

Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/20190827141712.21015-6-amadeuszx.slawinski@linux.intel.com
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl-topology.c
sound/soc/intel/skylake/skl.h

index ae5c75d03fdca75de27d2d6a81b5fdb06c7d9bae..69cd7a81bf2ac26062948dd415cc7950033787ec 100644 (file)
@@ -3579,23 +3579,25 @@ int skl_tplg_init(struct snd_soc_component *component, struct hdac_bus *bus)
         * The complete tplg for SKL is loaded as index 0, we don't use
         * any other index
         */
-       ret = snd_soc_tplg_component_load(component,
-                                       &skl_tplg_ops, fw, 0);
+       ret = snd_soc_tplg_component_load(component, &skl_tplg_ops, fw, 0);
        if (ret < 0) {
                dev_err(bus->dev, "tplg component load failed%d\n", ret);
-               release_firmware(fw);
-               return -EINVAL;
+               goto err;
        }
 
-       skl->tplg = fw;
        ret = skl_tplg_create_pipe_widget_list(component);
-       if (ret < 0)
-               return ret;
+       if (ret < 0) {
+               dev_err(bus->dev, "tplg create pipe widget list failed%d\n",
+                               ret);
+               goto err;
+       }
 
        list_for_each_entry(ppl, &skl->ppl_list, node)
                skl_tplg_set_pipe_type(skl, ppl->pipe);
 
-       return 0;
+err:
+       release_firmware(fw);
+       return ret;
 }
 
 void skl_tplg_exit(struct snd_soc_component *component, struct hdac_bus *bus)
@@ -3609,6 +3611,4 @@ void skl_tplg_exit(struct snd_soc_component *component, struct hdac_bus *bus)
 
        /* clean up topology */
        snd_soc_tplg_component_remove(component, SND_SOC_TPLG_INDEX_ALL);
-
-       release_firmware(skl->tplg);
 }
index f8c71415361005c846c13b77d0bf05fcb515b3ee..2bfbf59277c4682518e5ed5c3f1ce3a86ad059d3 100644 (file)
@@ -75,7 +75,6 @@ struct skl_dev {
        const char *fw_name;
        char tplg_name[64];
        unsigned short pci_id;
-       const struct firmware *tplg;
 
        int supend_active;