xref: /openbmc/linux/sound/soc/sof/intel/pci-tgl.c (revision a9022f4b)
18d4ba1beSPierre-Louis Bossart // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
28d4ba1beSPierre-Louis Bossart //
38d4ba1beSPierre-Louis Bossart // This file is provided under a dual BSD/GPLv2 license.  When using or
48d4ba1beSPierre-Louis Bossart // redistributing this file, you may do so under either license.
58d4ba1beSPierre-Louis Bossart //
68d4ba1beSPierre-Louis Bossart // Copyright(c) 2018-2021 Intel Corporation. All rights reserved.
78d4ba1beSPierre-Louis Bossart //
88d4ba1beSPierre-Louis Bossart // Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
98d4ba1beSPierre-Louis Bossart //
108d4ba1beSPierre-Louis Bossart 
118d4ba1beSPierre-Louis Bossart #include <linux/module.h>
128d4ba1beSPierre-Louis Bossart #include <linux/pci.h>
138d4ba1beSPierre-Louis Bossart #include <sound/soc-acpi.h>
148d4ba1beSPierre-Louis Bossart #include <sound/soc-acpi-intel-match.h>
158d4ba1beSPierre-Louis Bossart #include <sound/sof.h>
168d4ba1beSPierre-Louis Bossart #include "../ops.h"
178d4ba1beSPierre-Louis Bossart #include "../sof-pci-dev.h"
188d4ba1beSPierre-Louis Bossart 
198d4ba1beSPierre-Louis Bossart /* platform specific devices */
208d4ba1beSPierre-Louis Bossart #include "hda.h"
218d4ba1beSPierre-Louis Bossart 
228d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc tgl_desc = {
238d4ba1beSPierre-Louis Bossart 	.machines               = snd_soc_acpi_intel_tgl_machines,
248d4ba1beSPierre-Louis Bossart 	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
258d4ba1beSPierre-Louis Bossart 	.use_acpi_target_states	= true,
268d4ba1beSPierre-Louis Bossart 	.resindex_lpe_base      = 0,
278d4ba1beSPierre-Louis Bossart 	.resindex_pcicfg_base   = -1,
288d4ba1beSPierre-Louis Bossart 	.resindex_imr_base      = -1,
298d4ba1beSPierre-Louis Bossart 	.irqindex_host_ipc      = -1,
308d4ba1beSPierre-Louis Bossart 	.chip_info = &tgl_chip_info,
310cf8ff05SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
320cf8ff05SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
335962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
34a3757915SPierre-Louis Bossart 	.default_fw_path = {
35a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
360cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/tgl",
37a3757915SPierre-Louis Bossart 	},
38cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
39cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/tgl",
40cd6f2a2eSPeter Ujfalusi 	},
41a3757915SPierre-Louis Bossart 	.default_tplg_path = {
42a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
430cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
44a3757915SPierre-Louis Bossart 	},
45a97abb3cSPierre-Louis Bossart 	.default_fw_filename = {
46a97abb3cSPierre-Louis Bossart 		[SOF_IPC] = "sof-tgl.ri",
47a97abb3cSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
48a97abb3cSPierre-Louis Bossart 	},
498d4ba1beSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
508d4ba1beSPierre-Louis Bossart 	.ops = &sof_tgl_ops,
5137e809d5SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
529eb2b4caSRanjani Sridharan 	.ops_free = hda_ops_free,
538d4ba1beSPierre-Louis Bossart };
548d4ba1beSPierre-Louis Bossart 
558d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc tglh_desc = {
568d4ba1beSPierre-Louis Bossart 	.machines               = snd_soc_acpi_intel_tgl_machines,
578d4ba1beSPierre-Louis Bossart 	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
581b988997SLibin Yang 	.use_acpi_target_states	= true,
598d4ba1beSPierre-Louis Bossart 	.resindex_lpe_base      = 0,
608d4ba1beSPierre-Louis Bossart 	.resindex_pcicfg_base   = -1,
618d4ba1beSPierre-Louis Bossart 	.resindex_imr_base      = -1,
628d4ba1beSPierre-Louis Bossart 	.irqindex_host_ipc      = -1,
638d4ba1beSPierre-Louis Bossart 	.chip_info = &tglh_chip_info,
640cf8ff05SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
650cf8ff05SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
665962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
67a3757915SPierre-Louis Bossart 	.default_fw_path = {
68a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
690cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/tgl-h",
70a3757915SPierre-Louis Bossart 	},
71cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
72cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/tgl-h",
73cd6f2a2eSPeter Ujfalusi 	},
74a3757915SPierre-Louis Bossart 	.default_tplg_path = {
75a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
760cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
77a3757915SPierre-Louis Bossart 	},
78a97abb3cSPierre-Louis Bossart 	.default_fw_filename = {
79a97abb3cSPierre-Louis Bossart 		[SOF_IPC] = "sof-tgl-h.ri",
80a97abb3cSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
81a97abb3cSPierre-Louis Bossart 	},
828d4ba1beSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
838d4ba1beSPierre-Louis Bossart 	.ops = &sof_tgl_ops,
8437e809d5SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
851da51943SRanjani Sridharan 	.ops_free = hda_ops_free,
868d4ba1beSPierre-Louis Bossart };
878d4ba1beSPierre-Louis Bossart 
888d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc ehl_desc = {
898d4ba1beSPierre-Louis Bossart 	.machines               = snd_soc_acpi_intel_ehl_machines,
908d4ba1beSPierre-Louis Bossart 	.use_acpi_target_states	= true,
918d4ba1beSPierre-Louis Bossart 	.resindex_lpe_base      = 0,
928d4ba1beSPierre-Louis Bossart 	.resindex_pcicfg_base   = -1,
938d4ba1beSPierre-Louis Bossart 	.resindex_imr_base      = -1,
948d4ba1beSPierre-Louis Bossart 	.irqindex_host_ipc      = -1,
958d4ba1beSPierre-Louis Bossart 	.chip_info = &ehl_chip_info,
960cf8ff05SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
970cf8ff05SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
985962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
99a3757915SPierre-Louis Bossart 	.default_fw_path = {
100a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
1010cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/ehl",
102a3757915SPierre-Louis Bossart 	},
103cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
104cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/ehl",
105cd6f2a2eSPeter Ujfalusi 	},
106a3757915SPierre-Louis Bossart 	.default_tplg_path = {
107a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
1080cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
109a3757915SPierre-Louis Bossart 	},
110a97abb3cSPierre-Louis Bossart 	.default_fw_filename = {
111a97abb3cSPierre-Louis Bossart 		[SOF_IPC] = "sof-ehl.ri",
112a97abb3cSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
113a97abb3cSPierre-Louis Bossart 	},
1148d4ba1beSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-ehl-nocodec.tplg",
1153c429f86SLibin Yang 	.ops = &sof_tgl_ops,
11637e809d5SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
1179eb2b4caSRanjani Sridharan 	.ops_free = hda_ops_free,
1188d4ba1beSPierre-Louis Bossart };
1198d4ba1beSPierre-Louis Bossart 
1208d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc adls_desc = {
1218d4ba1beSPierre-Louis Bossart 	.machines               = snd_soc_acpi_intel_adl_machines,
1228d4ba1beSPierre-Louis Bossart 	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
1231b988997SLibin Yang 	.use_acpi_target_states	= true,
1248d4ba1beSPierre-Louis Bossart 	.resindex_lpe_base      = 0,
1258d4ba1beSPierre-Louis Bossart 	.resindex_pcicfg_base   = -1,
1268d4ba1beSPierre-Louis Bossart 	.resindex_imr_base      = -1,
1278d4ba1beSPierre-Louis Bossart 	.irqindex_host_ipc      = -1,
1288d4ba1beSPierre-Louis Bossart 	.chip_info = &adls_chip_info,
1290cf8ff05SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
1300cf8ff05SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
1315962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
132a3757915SPierre-Louis Bossart 	.default_fw_path = {
133a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
1340cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/adl-s",
135a3757915SPierre-Louis Bossart 	},
136cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
137cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/adl-s",
138cd6f2a2eSPeter Ujfalusi 	},
139a3757915SPierre-Louis Bossart 	.default_tplg_path = {
140a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
1410cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
142a3757915SPierre-Louis Bossart 	},
143a97abb3cSPierre-Louis Bossart 	.default_fw_filename = {
144a97abb3cSPierre-Louis Bossart 		[SOF_IPC] = "sof-adl-s.ri",
145a97abb3cSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
146a97abb3cSPierre-Louis Bossart 	},
1478d4ba1beSPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
1488d4ba1beSPierre-Louis Bossart 	.ops = &sof_tgl_ops,
14937e809d5SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
1509eb2b4caSRanjani Sridharan 	.ops_free = hda_ops_free,
1518d4ba1beSPierre-Louis Bossart };
1528d4ba1beSPierre-Louis Bossart 
1534ad03f89SSathya Prakash M R static const struct sof_dev_desc adl_desc = {
1544ad03f89SSathya Prakash M R 	.machines               = snd_soc_acpi_intel_adl_machines,
1554ad03f89SSathya Prakash M R 	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
156aa21548eSSathya Prakash M R 	.use_acpi_target_states = true,
1574ad03f89SSathya Prakash M R 	.resindex_lpe_base      = 0,
1584ad03f89SSathya Prakash M R 	.resindex_pcicfg_base   = -1,
1594ad03f89SSathya Prakash M R 	.resindex_imr_base      = -1,
1604ad03f89SSathya Prakash M R 	.irqindex_host_ipc      = -1,
1614ad03f89SSathya Prakash M R 	.chip_info = &tgl_chip_info,
1620cf8ff05SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
1630cf8ff05SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
1645962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
165a3757915SPierre-Louis Bossart 	.default_fw_path = {
166a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
1670cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/adl",
168a3757915SPierre-Louis Bossart 	},
169cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
170cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/adl",
171cd6f2a2eSPeter Ujfalusi 	},
172a3757915SPierre-Louis Bossart 	.default_tplg_path = {
173a3757915SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
1740cf8ff05SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
175a3757915SPierre-Louis Bossart 	},
176a97abb3cSPierre-Louis Bossart 	.default_fw_filename = {
177a97abb3cSPierre-Louis Bossart 		[SOF_IPC] = "sof-adl.ri",
178a97abb3cSPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
179a97abb3cSPierre-Louis Bossart 	},
1804ad03f89SSathya Prakash M R 	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
1814ad03f89SSathya Prakash M R 	.ops = &sof_tgl_ops,
18237e809d5SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
1839eb2b4caSRanjani Sridharan 	.ops_free = hda_ops_free,
1844ad03f89SSathya Prakash M R };
1854ad03f89SSathya Prakash M R 
18605de5cf6SPierre-Louis Bossart static const struct sof_dev_desc adl_n_desc = {
18705de5cf6SPierre-Louis Bossart 	.machines               = snd_soc_acpi_intel_adl_machines,
18805de5cf6SPierre-Louis Bossart 	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
18905de5cf6SPierre-Louis Bossart 	.use_acpi_target_states = true,
19005de5cf6SPierre-Louis Bossart 	.resindex_lpe_base      = 0,
19105de5cf6SPierre-Louis Bossart 	.resindex_pcicfg_base   = -1,
19205de5cf6SPierre-Louis Bossart 	.resindex_imr_base      = -1,
19305de5cf6SPierre-Louis Bossart 	.irqindex_host_ipc      = -1,
19405de5cf6SPierre-Louis Bossart 	.chip_info = &tgl_chip_info,
19505de5cf6SPierre-Louis Bossart 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
19605de5cf6SPierre-Louis Bossart 	.ipc_default		= SOF_IPC,
1975962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
19805de5cf6SPierre-Louis Bossart 	.default_fw_path = {
19905de5cf6SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof",
20005de5cf6SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs/adl-n",
20105de5cf6SPierre-Louis Bossart 	},
20225bbc0c5SPeter Ujfalusi 	.default_lib_path = {
20325bbc0c5SPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/adl-n",
20425bbc0c5SPeter Ujfalusi 	},
20505de5cf6SPierre-Louis Bossart 	.default_tplg_path = {
20605de5cf6SPierre-Louis Bossart 		[SOF_IPC] = "intel/sof-tplg",
20705de5cf6SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
20805de5cf6SPierre-Louis Bossart 	},
20905de5cf6SPierre-Louis Bossart 	.default_fw_filename = {
21005de5cf6SPierre-Louis Bossart 		[SOF_IPC] = "sof-adl-n.ri",
21105de5cf6SPierre-Louis Bossart 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
21205de5cf6SPierre-Louis Bossart 	},
21305de5cf6SPierre-Louis Bossart 	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
21405de5cf6SPierre-Louis Bossart 	.ops = &sof_tgl_ops,
21505de5cf6SPierre-Louis Bossart 	.ops_init = sof_tgl_ops_init,
2169eb2b4caSRanjani Sridharan 	.ops_free = hda_ops_free,
21705de5cf6SPierre-Louis Bossart };
21805de5cf6SPierre-Louis Bossart 
21963d375b9SKai Vehmanen static const struct sof_dev_desc rpls_desc = {
22063d375b9SKai Vehmanen 	.machines               = snd_soc_acpi_intel_rpl_machines,
22163d375b9SKai Vehmanen 	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
22263d375b9SKai Vehmanen 	.use_acpi_target_states	= true,
22363d375b9SKai Vehmanen 	.resindex_lpe_base      = 0,
22463d375b9SKai Vehmanen 	.resindex_pcicfg_base   = -1,
22563d375b9SKai Vehmanen 	.resindex_imr_base      = -1,
22663d375b9SKai Vehmanen 	.irqindex_host_ipc      = -1,
22763d375b9SKai Vehmanen 	.chip_info = &adls_chip_info,
22863d375b9SKai Vehmanen 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
22963d375b9SKai Vehmanen 	.ipc_default		= SOF_IPC,
2305962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
23163d375b9SKai Vehmanen 	.default_fw_path = {
23263d375b9SKai Vehmanen 		[SOF_IPC] = "intel/sof",
23363d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "intel/avs/rpl-s",
23463d375b9SKai Vehmanen 	},
235cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
236cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/rpl-s",
237cd6f2a2eSPeter Ujfalusi 	},
23863d375b9SKai Vehmanen 	.default_tplg_path = {
23963d375b9SKai Vehmanen 		[SOF_IPC] = "intel/sof-tplg",
24063d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
24163d375b9SKai Vehmanen 	},
24263d375b9SKai Vehmanen 	.default_fw_filename = {
24363d375b9SKai Vehmanen 		[SOF_IPC] = "sof-rpl-s.ri",
24463d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
24563d375b9SKai Vehmanen 	},
24663d375b9SKai Vehmanen 	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
24763d375b9SKai Vehmanen 	.ops = &sof_tgl_ops,
24863d375b9SKai Vehmanen 	.ops_init = sof_tgl_ops_init,
249376f79bbSRanjani Sridharan 	.ops_free = hda_ops_free,
25063d375b9SKai Vehmanen };
25163d375b9SKai Vehmanen 
25263d375b9SKai Vehmanen static const struct sof_dev_desc rpl_desc = {
25363d375b9SKai Vehmanen 	.machines               = snd_soc_acpi_intel_rpl_machines,
25463d375b9SKai Vehmanen 	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
25563d375b9SKai Vehmanen 	.use_acpi_target_states = true,
25663d375b9SKai Vehmanen 	.resindex_lpe_base      = 0,
25763d375b9SKai Vehmanen 	.resindex_pcicfg_base   = -1,
25863d375b9SKai Vehmanen 	.resindex_imr_base      = -1,
25963d375b9SKai Vehmanen 	.irqindex_host_ipc      = -1,
26063d375b9SKai Vehmanen 	.chip_info = &tgl_chip_info,
26163d375b9SKai Vehmanen 	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
26263d375b9SKai Vehmanen 	.ipc_default		= SOF_IPC,
2635962c2a5SPeter Ujfalusi 	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
26463d375b9SKai Vehmanen 	.default_fw_path = {
26563d375b9SKai Vehmanen 		[SOF_IPC] = "intel/sof",
26663d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "intel/avs/rpl",
26763d375b9SKai Vehmanen 	},
268cd6f2a2eSPeter Ujfalusi 	.default_lib_path = {
269cd6f2a2eSPeter Ujfalusi 		[SOF_INTEL_IPC4] = "intel/avs-lib/rpl",
270cd6f2a2eSPeter Ujfalusi 	},
27163d375b9SKai Vehmanen 	.default_tplg_path = {
27263d375b9SKai Vehmanen 		[SOF_IPC] = "intel/sof-tplg",
27363d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "intel/avs-tplg",
27463d375b9SKai Vehmanen 	},
27563d375b9SKai Vehmanen 	.default_fw_filename = {
27663d375b9SKai Vehmanen 		[SOF_IPC] = "sof-rpl.ri",
27763d375b9SKai Vehmanen 		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
27863d375b9SKai Vehmanen 	},
27963d375b9SKai Vehmanen 	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
28063d375b9SKai Vehmanen 	.ops = &sof_tgl_ops,
28163d375b9SKai Vehmanen 	.ops_init = sof_tgl_ops_init,
282376f79bbSRanjani Sridharan 	.ops_free = hda_ops_free,
28363d375b9SKai Vehmanen };
28463d375b9SKai Vehmanen 
2858d4ba1beSPierre-Louis Bossart /* PCI IDs */
2868d4ba1beSPierre-Louis Bossart static const struct pci_device_id sof_pci_ids[] = {
287*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_TGL_LP, &tgl_desc) },
288*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_TGL_H, &tglh_desc) },
289*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_EHL_0, &ehl_desc) },
290*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_EHL_3, &ehl_desc) },
291*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_S, &adls_desc) },
292*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_S, &rpls_desc) },
293*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_P, &adl_desc) },
294*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_PS, &adl_desc) },
295*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_P_0, &rpl_desc) },
296*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_P_1, &rpl_desc) },
297*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_M, &adl_desc) },
298*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_PX, &adl_desc) },
299*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_M, &rpl_desc) },
300*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_PX, &rpl_desc) },
301*a9022f4bSAmadeusz Sławiński 	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_N, &adl_n_desc) },
3028d4ba1beSPierre-Louis Bossart 	{ 0, }
3038d4ba1beSPierre-Louis Bossart };
3048d4ba1beSPierre-Louis Bossart MODULE_DEVICE_TABLE(pci, sof_pci_ids);
3058d4ba1beSPierre-Louis Bossart 
3068d4ba1beSPierre-Louis Bossart /* pci_driver definition */
3078d4ba1beSPierre-Louis Bossart static struct pci_driver snd_sof_pci_intel_tgl_driver = {
3088d4ba1beSPierre-Louis Bossart 	.name = "sof-audio-pci-intel-tgl",
3098d4ba1beSPierre-Louis Bossart 	.id_table = sof_pci_ids,
310194fe0fcSPierre-Louis Bossart 	.probe = hda_pci_intel_probe,
3118d4ba1beSPierre-Louis Bossart 	.remove = sof_pci_remove,
3128d4ba1beSPierre-Louis Bossart 	.shutdown = sof_pci_shutdown,
3138d4ba1beSPierre-Louis Bossart 	.driver = {
3148d4ba1beSPierre-Louis Bossart 		.pm = &sof_pci_pm,
3158d4ba1beSPierre-Louis Bossart 	},
3168d4ba1beSPierre-Louis Bossart };
3178d4ba1beSPierre-Louis Bossart module_pci_driver(snd_sof_pci_intel_tgl_driver);
3188d4ba1beSPierre-Louis Bossart 
3198d4ba1beSPierre-Louis Bossart MODULE_LICENSE("Dual BSD/GPL");
3208d4ba1beSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);
3218d4ba1beSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);
322