Commit 772627ac authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Mark Brown

ASoC: SOF: sof-pci-dev: add parameter to override topology filename

The existing 'tplg_path' module parameter can be used to load
alternate firmware files, be it for development or to handle
OEM-specific or board-specific releases. However the topology filename
is either hard-coded in machine descriptors or modified by specific
DMI-quirks.

For additional flexibility, this patch adds the 'tplg_filename' module
parameter to override topology names.

To avoid any confusion between DMI- and parameter-override, a variable
rename is added.
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarDaniel Baluta <daniel.baluta@nxp.com>
Reviewed-by: default avatarPaul Olaru <paul.olaru@oss.nxp.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20220414184817.362215-7-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 58c520e2
...@@ -31,17 +31,21 @@ static char *tplg_path; ...@@ -31,17 +31,21 @@ static char *tplg_path;
module_param(tplg_path, charp, 0444); module_param(tplg_path, charp, 0444);
MODULE_PARM_DESC(tplg_path, "alternate path for SOF topology."); MODULE_PARM_DESC(tplg_path, "alternate path for SOF topology.");
static char *tplg_filename;
module_param(tplg_filename, charp, 0444);
MODULE_PARM_DESC(tplg_filename, "alternate filename for SOF topology.");
static int sof_pci_debug; static int sof_pci_debug;
module_param_named(sof_pci_debug, sof_pci_debug, int, 0444); module_param_named(sof_pci_debug, sof_pci_debug, int, 0444);
MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)"); MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)");
static const char *sof_override_tplg_name; static const char *sof_dmi_override_tplg_name;
#define SOF_PCI_DISABLE_PM_RUNTIME BIT(0) #define SOF_PCI_DISABLE_PM_RUNTIME BIT(0)
static int sof_tplg_cb(const struct dmi_system_id *id) static int sof_tplg_cb(const struct dmi_system_id *id)
{ {
sof_override_tplg_name = id->driver_data; sof_dmi_override_tplg_name = id->driver_data;
return 1; return 1;
} }
...@@ -224,9 +228,20 @@ int sof_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) ...@@ -224,9 +228,20 @@ int sof_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
sof_pdata->tplg_filename_prefix = sof_pdata->tplg_filename_prefix =
sof_pdata->desc->default_tplg_path[sof_pdata->ipc_type]; sof_pdata->desc->default_tplg_path[sof_pdata->ipc_type];
dmi_check_system(sof_tplg_table); /*
if (sof_override_tplg_name) * the topology filename will be provided in the machine descriptor, unless
sof_pdata->tplg_filename = sof_override_tplg_name; * it is overridden by a module parameter or DMI quirk.
*/
if (tplg_filename) {
sof_pdata->tplg_filename = tplg_filename;
dev_dbg(dev, "Module parameter used, changed tplg filename to %s\n",
sof_pdata->tplg_filename);
} else {
dmi_check_system(sof_tplg_table);
if (sof_dmi_override_tplg_name)
sof_pdata->tplg_filename = sof_dmi_override_tplg_name;
}
/* set callback to be called on successful device probe to enable runtime_pm */ /* set callback to be called on successful device probe to enable runtime_pm */
sof_pdata->sof_probe_complete = sof_pci_probe_complete; sof_pdata->sof_probe_complete = sof_pci_probe_complete;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment