Message ID | 20200427111520.12076-2-mateusz.gorski@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for different DMIC configurations | expand |
On Mon, Apr 27, 2020 at 01:15:18PM +0200, Mateusz Gorski wrote: > Add alternative topology binary file name based on used machine driver > and fallback to use this name after failed attempt to load topology file > with name based on NHLT. > This change addresses multiple issues with current mechanism, for > example - there are devices without NHLT table, and that currently > results in tplg_name being empty. > > Changes in v2: > - added <sound/soc-acpi.h> include > - machine driver name is now read from different field As covered in submitting-patches.rst the changelog should go after the --- so it doesn't end up in the git changelog.
> On Mon, Apr 27, 2020 at 01:15:18PM +0200, Mateusz Gorski wrote: >> Add alternative topology binary file name based on used machine driver >> and fallback to use this name after failed attempt to load topology file >> with name based on NHLT. >> This change addresses multiple issues with current mechanism, for >> example - there are devices without NHLT table, and that currently >> results in tplg_name being empty. >> >> Changes in v2: >> - added <sound/soc-acpi.h> include >> - machine driver name is now read from different field > As covered in submitting-patches.rst the changelog should go after the > --- so it doesn't end up in the git changelog. Of course, my bad, pasted these in wrong place.. Thanks for pointing out. Sending v6, Mateusz
diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c index 69cd7a81bf2a..4b114ece58c6 100644 --- a/sound/soc/intel/skylake/skl-topology.c +++ b/sound/soc/intel/skylake/skl-topology.c @@ -14,6 +14,7 @@ #include <linux/uuid.h> #include <sound/intel-nhlt.h> #include <sound/soc.h> +#include <sound/soc-acpi.h> #include <sound/soc-topology.h> #include <uapi/sound/snd_sst_tokens.h> #include <uapi/sound/skl-tplg-interface.h> @@ -3565,8 +3566,20 @@ int skl_tplg_init(struct snd_soc_component *component, struct hdac_bus *bus) ret = request_firmware(&fw, skl->tplg_name, bus->dev); if (ret < 0) { - dev_info(bus->dev, "tplg fw %s load failed with %d, falling back to dfw_sst.bin", - skl->tplg_name, ret); + char alt_tplg_name[64]; + + snprintf(alt_tplg_name, sizeof(alt_tplg_name), "%s-tplg.bin", + skl->mach->drv_name); + dev_info(bus->dev, "tplg fw %s load failed with %d, trying alternative tplg name %s", + skl->tplg_name, ret, alt_tplg_name); + + ret = request_firmware(&fw, alt_tplg_name, bus->dev); + if (!ret) + goto component_load; + + dev_info(bus->dev, "tplg %s failed with %d, falling back to dfw_sst.bin", + alt_tplg_name, ret); + ret = request_firmware(&fw, "dfw_sst.bin", bus->dev); if (ret < 0) { dev_err(bus->dev, "Fallback tplg fw %s load failed with %d\n", @@ -3575,6 +3588,8 @@ int skl_tplg_init(struct snd_soc_component *component, struct hdac_bus *bus) } } +component_load: + /* * The complete tplg for SKL is loaded as index 0, we don't use * any other index