xref: /openbmc/linux/sound/soc/sof/intel/pci-lnl.c (revision 0d34c688)
164a63d99SRanjani Sridharan // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
264a63d99SRanjani Sridharan //
364a63d99SRanjani Sridharan // This file is provided under a dual BSD/GPLv2 license.  When using or
464a63d99SRanjani Sridharan // redistributing this file, you may do so under either license.
564a63d99SRanjani Sridharan //
664a63d99SRanjani Sridharan // Copyright(c) 2023 Intel Corporation. All rights reserved.
764a63d99SRanjani Sridharan //
864a63d99SRanjani Sridharan // Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
964a63d99SRanjani Sridharan //
1064a63d99SRanjani Sridharan 
1164a63d99SRanjani Sridharan #include <linux/module.h>
1264a63d99SRanjani Sridharan #include <linux/pci.h>
1364a63d99SRanjani Sridharan #include <sound/soc-acpi.h>
1464a63d99SRanjani Sridharan #include <sound/soc-acpi-intel-match.h>
1564a63d99SRanjani Sridharan #include <sound/sof.h>
1664a63d99SRanjani Sridharan #include "../ops.h"
1764a63d99SRanjani Sridharan #include "../sof-pci-dev.h"
1864a63d99SRanjani Sridharan 
1964a63d99SRanjani Sridharan /* platform specific devices */
2064a63d99SRanjani Sridharan #include "hda.h"
2164a63d99SRanjani Sridharan #include "mtl.h"
2264a63d99SRanjani Sridharan 
2364a63d99SRanjani Sridharan static const struct sof_dev_desc lnl_desc = {
2464a63d99SRanjani Sridharan 	.use_acpi_target_states	= true,
2564a63d99SRanjani Sridharan 	.machines               = snd_soc_acpi_intel_lnl_machines,
2664a63d99SRanjani Sridharan 	.alt_machines		= snd_soc_acpi_intel_lnl_sdw_machines,
2764a63d99SRanjani Sridharan 	.resindex_lpe_base      = 0,
2864a63d99SRanjani Sridharan 	.resindex_pcicfg_base   = -1,
2964a63d99SRanjani Sridharan 	.resindex_imr_base      = -1,
3064a63d99SRanjani Sridharan 	.irqindex_host_ipc      = -1,
3164a63d99SRanjani Sridharan 	.chip_info		= &lnl_chip_info,
3264a63d99SRanjani Sridharan 	.ipc_supported_mask	= BIT(SOF_INTEL_IPC4),
3364a63d99SRanjani Sridharan 	.ipc_default		= SOF_INTEL_IPC4,
3464a63d99SRanjani Sridharan 	.dspless_mode_supported	= true,
3564a63d99SRanjani Sridharan 	.default_fw_path = {
3664a63d99SRanjani Sridharan 		[SOF_INTEL_IPC4] = "intel/sof-ipc4/lnl",
3764a63d99SRanjani Sridharan 	},
380d34c688SPierre-Louis Bossart 	.default_lib_path = {
390d34c688SPierre-Louis Bossart 		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/lnl",
400d34c688SPierre-Louis Bossart 	},
4164a63d99SRanjani Sridharan 	.default_tplg_path = {
4264a63d99SRanjani Sridharan 		[SOF_INTEL_IPC4] = "intel/sof-ace-tplg",
4364a63d99SRanjani Sridharan 	},
4464a63d99SRanjani Sridharan 	.default_fw_filename = {
4564a63d99SRanjani Sridharan 		[SOF_INTEL_IPC4] = "sof-lnl.ri",
4664a63d99SRanjani Sridharan 	},
4764a63d99SRanjani Sridharan 	.nocodec_tplg_filename = "sof-lnl-nocodec.tplg",
48c22d5327SPierre-Louis Bossart 	.ops = &sof_lnl_ops,
49c22d5327SPierre-Louis Bossart 	.ops_init = sof_lnl_ops_init,
5064a63d99SRanjani Sridharan };
5164a63d99SRanjani Sridharan 
5264a63d99SRanjani Sridharan /* PCI IDs */
5364a63d99SRanjani Sridharan static const struct pci_device_id sof_pci_ids[] = {
5464a63d99SRanjani Sridharan 	{ PCI_DEVICE_DATA(INTEL, HDA_LNL_P, &lnl_desc) }, /* LNL-P */
5564a63d99SRanjani Sridharan 	{ 0, }
5664a63d99SRanjani Sridharan };
5764a63d99SRanjani Sridharan MODULE_DEVICE_TABLE(pci, sof_pci_ids);
5864a63d99SRanjani Sridharan 
5964a63d99SRanjani Sridharan /* pci_driver definition */
6064a63d99SRanjani Sridharan static struct pci_driver snd_sof_pci_intel_lnl_driver = {
6164a63d99SRanjani Sridharan 	.name = "sof-audio-pci-intel-lnl",
6264a63d99SRanjani Sridharan 	.id_table = sof_pci_ids,
6364a63d99SRanjani Sridharan 	.probe = hda_pci_intel_probe,
6464a63d99SRanjani Sridharan 	.remove = sof_pci_remove,
6564a63d99SRanjani Sridharan 	.shutdown = sof_pci_shutdown,
6664a63d99SRanjani Sridharan 	.driver = {
6764a63d99SRanjani Sridharan 		.pm = &sof_pci_pm,
6864a63d99SRanjani Sridharan 	},
6964a63d99SRanjani Sridharan };
7064a63d99SRanjani Sridharan module_pci_driver(snd_sof_pci_intel_lnl_driver);
7164a63d99SRanjani Sridharan 
7264a63d99SRanjani Sridharan MODULE_LICENSE("Dual BSD/GPL");
7364a63d99SRanjani Sridharan MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);
7464a63d99SRanjani Sridharan MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);
75