mirror of
https://github.com/torvalds/linux.git
synced 2026-05-02 13:32:40 -04:00
ASoC: SOF: Add path definition for external firmware libraries
IPC4 based firmware supports dynamically loaded external libraries. The libraries will be not stored alongside of the firmware or tplg files. For intel platforms the default path will be: intel/avs-lib|sof-ipc4-lib/<platform>/ if a community key is used on the given machine then the libraries will be under 'community' directory, like it is done for the firmware itself. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Chao Song <chao.song@intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20221020121238.18339-12-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
c73f8b4708
commit
25bbc0c59e
@@ -28,6 +28,10 @@ static char *fw_filename;
|
||||
module_param(fw_filename, charp, 0444);
|
||||
MODULE_PARM_DESC(fw_filename, "alternate filename for SOF firmware.");
|
||||
|
||||
static char *lib_path;
|
||||
module_param(lib_path, charp, 0444);
|
||||
MODULE_PARM_DESC(lib_path, "alternate path for SOF firmware libraries.");
|
||||
|
||||
static char *tplg_path;
|
||||
module_param(tplg_path, charp, 0444);
|
||||
MODULE_PARM_DESC(tplg_path, "alternate path for SOF topology.");
|
||||
@@ -272,6 +276,28 @@ int sof_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
|
||||
sof_pdata->desc->default_fw_path[sof_pdata->ipc_type];
|
||||
}
|
||||
|
||||
if (lib_path) {
|
||||
sof_pdata->fw_lib_prefix = lib_path;
|
||||
|
||||
dev_dbg(dev, "Module parameter used, changed fw_lib path to %s\n",
|
||||
sof_pdata->fw_lib_prefix);
|
||||
|
||||
} else if (sof_pdata->desc->default_lib_path[sof_pdata->ipc_type]) {
|
||||
if (dmi_check_system(community_key_platforms) && sof_dmi_use_community_key) {
|
||||
sof_pdata->fw_lib_prefix =
|
||||
devm_kasprintf(dev, GFP_KERNEL, "%s/%s",
|
||||
sof_pdata->desc->default_lib_path[sof_pdata->ipc_type],
|
||||
"community");
|
||||
|
||||
dev_dbg(dev,
|
||||
"Platform uses community key, changed fw_lib path to %s\n",
|
||||
sof_pdata->fw_lib_prefix);
|
||||
} else {
|
||||
sof_pdata->fw_lib_prefix =
|
||||
sof_pdata->desc->default_lib_path[sof_pdata->ipc_type];
|
||||
}
|
||||
}
|
||||
|
||||
if (tplg_path)
|
||||
sof_pdata->tplg_filename_prefix = tplg_path;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user