mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-01 06:46:35 +01:00
ASOC: SOF: pci: add ipc_type override for Intel IPC4 tests
Add a kernel module parameter for select the non-default IPC type. This should only be used by developers with access to firmware and topology files, typically Intel and partners. Signed-off-by: Rander Wang <[email protected]> Signed-off-by: Pierre-Louis Bossart <[email protected]> Signed-off-by: Ranjani Sridharan <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Reviewed-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
This commit is contained in:
1 parent
d81e4ba5ef
commit
4bfbbb76e8
2 files changed
+28
No files matched your search
@@ -358,6 +358,13 @@ int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data)
|
||||
sdev->first_boot = true;
|
||||
dev_set_drvdata(dev, sdev);
|
||||
|
||||
/* check IPC support */
|
||||
if (!(BIT(plat_data->ipc_type) & plat_data->desc->ipc_supported_mask)) {
|
||||
dev_err(dev, "ipc_type %d is not supported on this platform, mask is %#x\n",
|
||||
plat_data->ipc_type, plat_data->desc->ipc_supported_mask);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* init ops, if necessary */
|
||||
ret = sof_ops_init(sdev);
|
||||
if (ret < 0)
|
||||
|
||||
@@ -40,6 +40,10 @@ 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 int sof_pci_ipc_type = -1;
|
||||
module_param_named(ipc_type, sof_pci_ipc_type, int, 0444);
|
||||
MODULE_PARM_DESC(ipc_type, "SOF IPC type (0): SOF, (1) Intel CAVS");
|
||||
|
||||
static const char *sof_dmi_override_tplg_name;
|
||||
static bool sof_dmi_use_community_key;
|
||||
|
||||
@@ -206,6 +210,23 @@ int sof_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id)
|
||||
|
||||
sof_pdata->ipc_type = desc->ipc_default;
|
||||
|
||||
if (sof_pci_ipc_type < 0) {
|
||||
sof_pdata->ipc_type = desc->ipc_default;
|
||||
} else {
|
||||
dev_info(dev, "overriding default IPC %d to requested %d\n",
|
||||
desc->ipc_default, sof_pci_ipc_type);
|
||||
if (sof_pci_ipc_type >= SOF_IPC_TYPE_COUNT) {
|
||||
dev_err(dev, "invalid request value %d\n", sof_pci_ipc_type);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (!(BIT(sof_pci_ipc_type) & desc->ipc_supported_mask)) {
|
||||
dev_err(dev, "invalid request value %d, supported mask is %#x\n",
|
||||
sof_pci_ipc_type, desc->ipc_supported_mask);
|
||||
return -EINVAL;
|
||||
}
|
||||
sof_pdata->ipc_type = sof_pci_ipc_type;
|
||||
}
|
||||
|
||||
if (fw_filename) {
|
||||
sof_pdata->fw_filename = fw_filename;
|
||||
|
||||
|
||||
Reference in new issue
Block a user