xref: /openbmc/linux/sound/soc/sof/intel/pci-skl.c (revision e2379d4a83da44816009971e932db31e665d41a1)
1*e2379d4aSPierre-Louis Bossart // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
2*e2379d4aSPierre-Louis Bossart //
3*e2379d4aSPierre-Louis Bossart // This file is provided under a dual BSD/GPLv2 license.  When using or
4*e2379d4aSPierre-Louis Bossart // redistributing this file, you may do so under either license.
5*e2379d4aSPierre-Louis Bossart //
6*e2379d4aSPierre-Louis Bossart // Copyright(c) 2018-2022 Intel Corporation. All rights reserved.
7*e2379d4aSPierre-Louis Bossart //
8*e2379d4aSPierre-Louis Bossart 
9*e2379d4aSPierre-Louis Bossart #include <linux/module.h>
10*e2379d4aSPierre-Louis Bossart #include <linux/pci.h>
11*e2379d4aSPierre-Louis Bossart #include <sound/soc-acpi.h>
12*e2379d4aSPierre-Louis Bossart #include <sound/soc-acpi-intel-match.h>
13*e2379d4aSPierre-Louis Bossart #include <sound/sof.h>
14*e2379d4aSPierre-Louis Bossart #include "../ops.h"
15*e2379d4aSPierre-Louis Bossart #include "../sof-pci-dev.h"
16*e2379d4aSPierre-Louis Bossart 
17*e2379d4aSPierre-Louis Bossart /* platform specific devices */
18*e2379d4aSPierre-Louis Bossart #include "hda.h"
19*e2379d4aSPierre-Louis Bossart 
20*e2379d4aSPierre-Louis Bossart static struct sof_dev_desc skl_desc = {
21*e2379d4aSPierre-Louis Bossart 	.machines		= snd_soc_acpi_intel_skl_machines,
22*e2379d4aSPierre-Louis Bossart 	.resindex_lpe_base	= 0,
23*e2379d4aSPierre-Louis Bossart 	.resindex_pcicfg_base	= -1,
24*e2379d4aSPierre-Louis Bossart 	.resindex_imr_base	= -1,
25*e2379d4aSPierre-Louis Bossart 	.chip_info = &skl_chip_info,
26*e2379d4aSPierre-Louis Bossart 	.irqindex_host_ipc	= -1,
27*e2379d4aSPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_INTEL_IPC4),
28*e2379d4aSPierre-Louis Bossart 	.ipc_default		= SOF_INTEL_IPC4,
29*e2379d4aSPierre-Louis Bossart 	.default_fw_path = {
30*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/skl",
31*e2379d4aSPierre-Louis Bossart 	},
32*e2379d4aSPierre-Louis Bossart 	.default_tplg_path = {
33*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
34*e2379d4aSPierre-Louis Bossart 	},
35*e2379d4aSPierre-Louis Bossart 	.default_fw_filename = {
36*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
37*e2379d4aSPierre-Louis Bossart 	},
38*e2379d4aSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-skl-nocodec.tplg",
39*e2379d4aSPierre-Louis Bossart 	.ops = &sof_skl_ops,
40*e2379d4aSPierre-Louis Bossart };
41*e2379d4aSPierre-Louis Bossart 
42*e2379d4aSPierre-Louis Bossart static struct sof_dev_desc kbl_desc = {
43*e2379d4aSPierre-Louis Bossart 	.machines		= snd_soc_acpi_intel_kbl_machines,
44*e2379d4aSPierre-Louis Bossart 	.resindex_lpe_base	= 0,
45*e2379d4aSPierre-Louis Bossart 	.resindex_pcicfg_base	= -1,
46*e2379d4aSPierre-Louis Bossart 	.resindex_imr_base	= -1,
47*e2379d4aSPierre-Louis Bossart 	.chip_info = &skl_chip_info,
48*e2379d4aSPierre-Louis Bossart 	.irqindex_host_ipc	= -1,
49*e2379d4aSPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_INTEL_IPC4),
50*e2379d4aSPierre-Louis Bossart 	.ipc_default		= SOF_INTEL_IPC4,
51*e2379d4aSPierre-Louis Bossart 	.default_fw_path = {
52*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/kbl",
53*e2379d4aSPierre-Louis Bossart 	},
54*e2379d4aSPierre-Louis Bossart 	.default_tplg_path = {
55*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
56*e2379d4aSPierre-Louis Bossart 	},
57*e2379d4aSPierre-Louis Bossart 	.default_fw_filename = {
58*e2379d4aSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
59*e2379d4aSPierre-Louis Bossart 	},
60*e2379d4aSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-kbl-nocodec.tplg",
61*e2379d4aSPierre-Louis Bossart 	.ops = &sof_skl_ops,
62*e2379d4aSPierre-Louis Bossart };
63*e2379d4aSPierre-Louis Bossart 
64*e2379d4aSPierre-Louis Bossart /* PCI IDs */
65*e2379d4aSPierre-Louis Bossart static const struct pci_device_id sof_pci_ids[] = {
66*e2379d4aSPierre-Louis Bossart 	/* Sunrise Point-LP */
67*e2379d4aSPierre-Louis Bossart 	{ PCI_DEVICE(0x8086, 0x9d70), .driver_data = (unsigned long)&skl_desc},
68*e2379d4aSPierre-Louis Bossart 	/* KBL */
69*e2379d4aSPierre-Louis Bossart 	{ PCI_DEVICE(0x8086, 0x9d71), .driver_data = (unsigned long)&kbl_desc},
70*e2379d4aSPierre-Louis Bossart 	{ 0, }
71*e2379d4aSPierre-Louis Bossart };
72*e2379d4aSPierre-Louis Bossart MODULE_DEVICE_TABLE(pci, sof_pci_ids);
73*e2379d4aSPierre-Louis Bossart 
74*e2379d4aSPierre-Louis Bossart /* pci_driver definition */
75*e2379d4aSPierre-Louis Bossart static struct pci_driver snd_sof_pci_intel_skl_driver = {
76*e2379d4aSPierre-Louis Bossart 	.name = "sof-audio-pci-intel-skl",
77*e2379d4aSPierre-Louis Bossart 	.id_table = sof_pci_ids,
78*e2379d4aSPierre-Louis Bossart 	.probe = hda_pci_intel_probe,
79*e2379d4aSPierre-Louis Bossart 	.remove = sof_pci_remove,
80*e2379d4aSPierre-Louis Bossart 	.shutdown = sof_pci_shutdown,
81*e2379d4aSPierre-Louis Bossart 	.driver = {
82*e2379d4aSPierre-Louis Bossart 		.pm = &sof_pci_pm,
83*e2379d4aSPierre-Louis Bossart 	},
84*e2379d4aSPierre-Louis Bossart };
85*e2379d4aSPierre-Louis Bossart module_pci_driver(snd_sof_pci_intel_skl_driver);
86*e2379d4aSPierre-Louis Bossart 
87*e2379d4aSPierre-Louis Bossart MODULE_LICENSE("Dual BSD/GPL");
88*e2379d4aSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);
89*e2379d4aSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);
90