ASoC: Intel: avs: Provide support for fallback topology
commit 739c031110
upstream.
HDA and HDMI devices are simple enough that in case of user not having
topology tailored to their device, they can use fallback topology.
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/20230905093147.1960675-1-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b9b7cfec2c
commit
6a8b57c70d
|
@ -798,6 +798,28 @@ static int avs_component_probe(struct snd_soc_component *component)
|
|||
|
||||
ret = avs_load_topology(component, filename);
|
||||
kfree(filename);
|
||||
if (ret == -ENOENT && !strncmp(mach->tplg_filename, "hda-", 4)) {
|
||||
unsigned int vendor_id;
|
||||
|
||||
if (sscanf(mach->tplg_filename, "hda-%08x-tplg.bin", &vendor_id) != 1)
|
||||
return ret;
|
||||
|
||||
if (((vendor_id >> 16) & 0xFFFF) == 0x8086)
|
||||
mach->tplg_filename = devm_kasprintf(adev->dev, GFP_KERNEL,
|
||||
"hda-8086-generic-tplg.bin");
|
||||
else
|
||||
mach->tplg_filename = devm_kasprintf(adev->dev, GFP_KERNEL,
|
||||
"hda-generic-tplg.bin");
|
||||
|
||||
filename = kasprintf(GFP_KERNEL, "%s/%s", component->driver->topology_name_prefix,
|
||||
mach->tplg_filename);
|
||||
if (!filename)
|
||||
return -ENOMEM;
|
||||
|
||||
dev_info(card->dev, "trying to load fallback topology %s\n", mach->tplg_filename);
|
||||
ret = avs_load_topology(component, filename);
|
||||
kfree(filename);
|
||||
}
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
Loading…
Reference in New Issue