forked from Minki/linux
ASoC: SOF: Add topology filename override based on dmi data match
Add topology filename override based on system DMI data matching, typically to account for a different hardware layout. In ACPI based systems, the tplg_filename is pre-defined in an ACPI machine table. When a DMI quirk is detected, the sof_pdata->tplg_filename is not set with the hard-coded ACPI value, and instead is set with the DMI-specific filename. Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200821195603.215535-14-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3e1734b64c
commit
5253a73d56
@ -1179,7 +1179,13 @@ void hda_machine_select(struct snd_sof_dev *sdev)
|
||||
|
||||
mach = snd_soc_acpi_find_machine(desc->machines);
|
||||
if (mach) {
|
||||
sof_pdata->tplg_filename = mach->sof_tplg_filename;
|
||||
/*
|
||||
* If tplg file name is overridden, use it instead of
|
||||
* the one set in mach table
|
||||
*/
|
||||
if (!sof_pdata->tplg_filename)
|
||||
sof_pdata->tplg_filename = mach->sof_tplg_filename;
|
||||
|
||||
sof_pdata->machine = mach;
|
||||
|
||||
if (mach->link_mask) {
|
||||
|
@ -35,8 +35,28 @@ static int sof_pci_debug;
|
||||
module_param_named(sof_pci_debug, sof_pci_debug, int, 0444);
|
||||
MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)");
|
||||
|
||||
static const char *sof_override_tplg_name;
|
||||
|
||||
#define SOF_PCI_DISABLE_PM_RUNTIME BIT(0)
|
||||
|
||||
static int sof_tplg_cb(const struct dmi_system_id *id)
|
||||
{
|
||||
sof_override_tplg_name = id->driver_data;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct dmi_system_id sof_tplg_table[] = {
|
||||
{
|
||||
.callback = sof_tplg_cb,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_PRODUCT_FAMILY, "Google_Volteer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Terrador"),
|
||||
},
|
||||
.driver_data = "sof-tgl-rt5682-ssp0-max98373-ssp2.tplg",
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct dmi_system_id community_key_platforms[] = {
|
||||
{
|
||||
.ident = "Up Squared",
|
||||
@ -347,6 +367,10 @@ static int sof_pci_probe(struct pci_dev *pci,
|
||||
sof_pdata->tplg_filename_prefix =
|
||||
sof_pdata->desc->default_tplg_path;
|
||||
|
||||
dmi_check_system(sof_tplg_table);
|
||||
if (sof_override_tplg_name)
|
||||
sof_pdata->tplg_filename = sof_override_tplg_name;
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE)
|
||||
/* set callback to enable runtime_pm */
|
||||
sof_pdata->sof_probe_complete = sof_pci_probe_complete;
|
||||
|
Loading…
Reference in New Issue
Block a user