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