Linux Audio

Check our new training course

Loading...
v6.8
  1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
  2//
  3// This file is provided under a dual BSD/GPLv2 license.  When using or
  4// redistributing this file, you may do so under either license.
  5//
  6// Copyright(c) 2018-2021 Intel Corporation. All rights reserved.
  7//
  8// Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
  9//
 10
 11#include <linux/module.h>
 12#include <linux/pci.h>
 13#include <sound/soc-acpi.h>
 14#include <sound/soc-acpi-intel-match.h>
 15#include <sound/sof.h>
 16#include "../ops.h"
 17#include "../sof-pci-dev.h"
 18
 19/* platform specific devices */
 20#include "hda.h"
 21
 22static const struct sof_dev_desc tgl_desc = {
 23	.machines               = snd_soc_acpi_intel_tgl_machines,
 24	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
 25	.use_acpi_target_states	= true,
 26	.resindex_lpe_base      = 0,
 27	.resindex_pcicfg_base   = -1,
 28	.resindex_imr_base      = -1,
 29	.irqindex_host_ipc      = -1,
 30	.chip_info = &tgl_chip_info,
 31	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
 32	.ipc_default		= SOF_IPC_TYPE_3,
 33	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
 34	.default_fw_path = {
 35		[SOF_IPC_TYPE_3] = "intel/sof",
 36		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/tgl",
 37	},
 38	.default_lib_path = {
 39		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/tgl",
 40	},
 41	.default_tplg_path = {
 42		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
 43		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
 44	},
 45	.default_fw_filename = {
 46		[SOF_IPC_TYPE_3] = "sof-tgl.ri",
 47		[SOF_IPC_TYPE_4] = "sof-tgl.ri",
 48	},
 49	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
 50	.ops = &sof_tgl_ops,
 51	.ops_init = sof_tgl_ops_init,
 52	.ops_free = hda_ops_free,
 53};
 54
 55static const struct sof_dev_desc tglh_desc = {
 56	.machines               = snd_soc_acpi_intel_tgl_machines,
 57	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
 58	.use_acpi_target_states	= true,
 59	.resindex_lpe_base      = 0,
 60	.resindex_pcicfg_base   = -1,
 61	.resindex_imr_base      = -1,
 62	.irqindex_host_ipc      = -1,
 63	.chip_info = &tglh_chip_info,
 64	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
 65	.ipc_default		= SOF_IPC_TYPE_3,
 66	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
 67	.default_fw_path = {
 68		[SOF_IPC_TYPE_3] = "intel/sof",
 69		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/tgl-h",
 70	},
 71	.default_lib_path = {
 72		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/tgl-h",
 73	},
 74	.default_tplg_path = {
 75		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
 76		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
 77	},
 78	.default_fw_filename = {
 79		[SOF_IPC_TYPE_3] = "sof-tgl-h.ri",
 80		[SOF_IPC_TYPE_4] = "sof-tgl-h.ri",
 81	},
 82	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
 83	.ops = &sof_tgl_ops,
 84	.ops_init = sof_tgl_ops_init,
 85	.ops_free = hda_ops_free,
 86};
 87
 88static const struct sof_dev_desc ehl_desc = {
 89	.machines               = snd_soc_acpi_intel_ehl_machines,
 90	.use_acpi_target_states	= true,
 91	.resindex_lpe_base      = 0,
 92	.resindex_pcicfg_base   = -1,
 93	.resindex_imr_base      = -1,
 94	.irqindex_host_ipc      = -1,
 95	.chip_info = &ehl_chip_info,
 96	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
 97	.ipc_default		= SOF_IPC_TYPE_3,
 98	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
 99	.default_fw_path = {
100		[SOF_IPC_TYPE_3] = "intel/sof",
101		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/ehl",
102	},
103	.default_lib_path = {
104		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/ehl",
105	},
106	.default_tplg_path = {
107		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
108		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
109	},
110	.default_fw_filename = {
111		[SOF_IPC_TYPE_3] = "sof-ehl.ri",
112		[SOF_IPC_TYPE_4] = "sof-ehl.ri",
113	},
114	.nocodec_tplg_filename = "sof-ehl-nocodec.tplg",
115	.ops = &sof_tgl_ops,
116	.ops_init = sof_tgl_ops_init,
117	.ops_free = hda_ops_free,
118};
119
120static const struct sof_dev_desc adls_desc = {
121	.machines               = snd_soc_acpi_intel_adl_machines,
122	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
123	.use_acpi_target_states	= true,
124	.resindex_lpe_base      = 0,
125	.resindex_pcicfg_base   = -1,
126	.resindex_imr_base      = -1,
127	.irqindex_host_ipc      = -1,
128	.chip_info = &adls_chip_info,
129	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
130	.ipc_default		= SOF_IPC_TYPE_3,
131	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
132	.default_fw_path = {
133		[SOF_IPC_TYPE_3] = "intel/sof",
134		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl-s",
135	},
136	.default_lib_path = {
137		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl-s",
138	},
139	.default_tplg_path = {
140		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
141		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
142	},
143	.default_fw_filename = {
144		[SOF_IPC_TYPE_3] = "sof-adl-s.ri",
145		[SOF_IPC_TYPE_4] = "sof-adl-s.ri",
146	},
147	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
148	.ops = &sof_tgl_ops,
149	.ops_init = sof_tgl_ops_init,
150	.ops_free = hda_ops_free,
151};
152
153static const struct sof_dev_desc adl_desc = {
154	.machines               = snd_soc_acpi_intel_adl_machines,
155	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
156	.use_acpi_target_states = true,
157	.resindex_lpe_base      = 0,
158	.resindex_pcicfg_base   = -1,
159	.resindex_imr_base      = -1,
160	.irqindex_host_ipc      = -1,
161	.chip_info = &tgl_chip_info,
162	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
163	.ipc_default		= SOF_IPC_TYPE_3,
164	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
165	.default_fw_path = {
166		[SOF_IPC_TYPE_3] = "intel/sof",
167		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl",
168	},
169	.default_lib_path = {
170		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl",
171	},
172	.default_tplg_path = {
173		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
174		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
175	},
176	.default_fw_filename = {
177		[SOF_IPC_TYPE_3] = "sof-adl.ri",
178		[SOF_IPC_TYPE_4] = "sof-adl.ri",
179	},
180	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
181	.ops = &sof_tgl_ops,
182	.ops_init = sof_tgl_ops_init,
183	.ops_free = hda_ops_free,
184};
185
186static const struct sof_dev_desc adl_n_desc = {
187	.machines               = snd_soc_acpi_intel_adl_machines,
188	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
189	.use_acpi_target_states = true,
190	.resindex_lpe_base      = 0,
191	.resindex_pcicfg_base   = -1,
192	.resindex_imr_base      = -1,
193	.irqindex_host_ipc      = -1,
194	.chip_info = &tgl_chip_info,
195	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
196	.ipc_default		= SOF_IPC_TYPE_3,
197	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
198	.default_fw_path = {
199		[SOF_IPC_TYPE_3] = "intel/sof",
200		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl-n",
201	},
202	.default_lib_path = {
203		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl-n",
204	},
205	.default_tplg_path = {
206		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
207		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
208	},
209	.default_fw_filename = {
210		[SOF_IPC_TYPE_3] = "sof-adl-n.ri",
211		[SOF_IPC_TYPE_4] = "sof-adl-n.ri",
212	},
213	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
214	.ops = &sof_tgl_ops,
215	.ops_init = sof_tgl_ops_init,
216	.ops_free = hda_ops_free,
217};
218
219static const struct sof_dev_desc rpls_desc = {
220	.machines               = snd_soc_acpi_intel_rpl_machines,
221	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
222	.use_acpi_target_states	= true,
223	.resindex_lpe_base      = 0,
224	.resindex_pcicfg_base   = -1,
225	.resindex_imr_base      = -1,
226	.irqindex_host_ipc      = -1,
227	.chip_info = &adls_chip_info,
228	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
229	.ipc_default		= SOF_IPC_TYPE_3,
230	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
231	.default_fw_path = {
232		[SOF_IPC_TYPE_3] = "intel/sof",
233		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/rpl-s",
234	},
235	.default_lib_path = {
236		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/rpl-s",
237	},
238	.default_tplg_path = {
239		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
240		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
241	},
242	.default_fw_filename = {
243		[SOF_IPC_TYPE_3] = "sof-rpl-s.ri",
244		[SOF_IPC_TYPE_4] = "sof-rpl-s.ri",
245	},
246	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
247	.ops = &sof_tgl_ops,
248	.ops_init = sof_tgl_ops_init,
249	.ops_free = hda_ops_free,
250};
251
252static const struct sof_dev_desc rpl_desc = {
253	.machines               = snd_soc_acpi_intel_rpl_machines,
254	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
255	.use_acpi_target_states = true,
256	.resindex_lpe_base      = 0,
257	.resindex_pcicfg_base   = -1,
258	.resindex_imr_base      = -1,
259	.irqindex_host_ipc      = -1,
260	.chip_info = &tgl_chip_info,
261	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),
262	.ipc_default		= SOF_IPC_TYPE_3,
263	.dspless_mode_supported	= true,		/* Only supported for HDaudio */
264	.default_fw_path = {
265		[SOF_IPC_TYPE_3] = "intel/sof",
266		[SOF_IPC_TYPE_4] = "intel/sof-ipc4/rpl",
267	},
268	.default_lib_path = {
269		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/rpl",
270	},
271	.default_tplg_path = {
272		[SOF_IPC_TYPE_3] = "intel/sof-tplg",
273		[SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg",
274	},
275	.default_fw_filename = {
276		[SOF_IPC_TYPE_3] = "sof-rpl.ri",
277		[SOF_IPC_TYPE_4] = "sof-rpl.ri",
278	},
279	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
280	.ops = &sof_tgl_ops,
281	.ops_init = sof_tgl_ops_init,
282	.ops_free = hda_ops_free,
283};
284
285/* PCI IDs */
286static const struct pci_device_id sof_pci_ids[] = {
287	{ PCI_DEVICE_DATA(INTEL, HDA_TGL_LP, &tgl_desc) },
288	{ PCI_DEVICE_DATA(INTEL, HDA_TGL_H, &tglh_desc) },
289	{ PCI_DEVICE_DATA(INTEL, HDA_EHL_0, &ehl_desc) },
290	{ PCI_DEVICE_DATA(INTEL, HDA_EHL_3, &ehl_desc) },
291	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_S, &adls_desc) },
292	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_S, &rpls_desc) },
293	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_P, &adl_desc) },
294	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_PS, &adl_desc) },
295	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_P_0, &rpl_desc) },
296	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_P_1, &rpl_desc) },
297	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_M, &adl_desc) },
298	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_PX, &adl_desc) },
299	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_M, &rpl_desc) },
300	{ PCI_DEVICE_DATA(INTEL, HDA_RPL_PX, &rpl_desc) },
301	{ PCI_DEVICE_DATA(INTEL, HDA_ADL_N, &adl_n_desc) },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302	{ 0, }
303};
304MODULE_DEVICE_TABLE(pci, sof_pci_ids);
305
306/* pci_driver definition */
307static struct pci_driver snd_sof_pci_intel_tgl_driver = {
308	.name = "sof-audio-pci-intel-tgl",
309	.id_table = sof_pci_ids,
310	.probe = hda_pci_intel_probe,
311	.remove = sof_pci_remove,
312	.shutdown = sof_pci_shutdown,
313	.driver = {
314		.pm = &sof_pci_pm,
315	},
316};
317module_pci_driver(snd_sof_pci_intel_tgl_driver);
318
319MODULE_LICENSE("Dual BSD/GPL");
320MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);
321MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);
v6.2
  1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
  2//
  3// This file is provided under a dual BSD/GPLv2 license.  When using or
  4// redistributing this file, you may do so under either license.
  5//
  6// Copyright(c) 2018-2021 Intel Corporation. All rights reserved.
  7//
  8// Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
  9//
 10
 11#include <linux/module.h>
 12#include <linux/pci.h>
 13#include <sound/soc-acpi.h>
 14#include <sound/soc-acpi-intel-match.h>
 15#include <sound/sof.h>
 16#include "../ops.h"
 17#include "../sof-pci-dev.h"
 18
 19/* platform specific devices */
 20#include "hda.h"
 21
 22static const struct sof_dev_desc tgl_desc = {
 23	.machines               = snd_soc_acpi_intel_tgl_machines,
 24	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
 25	.use_acpi_target_states	= true,
 26	.resindex_lpe_base      = 0,
 27	.resindex_pcicfg_base   = -1,
 28	.resindex_imr_base      = -1,
 29	.irqindex_host_ipc      = -1,
 30	.chip_info = &tgl_chip_info,
 31	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
 32	.ipc_default		= SOF_IPC,
 
 33	.default_fw_path = {
 34		[SOF_IPC] = "intel/sof",
 35		[SOF_INTEL_IPC4] = "intel/avs/tgl",
 36	},
 37	.default_lib_path = {
 38		[SOF_INTEL_IPC4] = "intel/avs-lib/tgl",
 39	},
 40	.default_tplg_path = {
 41		[SOF_IPC] = "intel/sof-tplg",
 42		[SOF_INTEL_IPC4] = "intel/avs-tplg",
 43	},
 44	.default_fw_filename = {
 45		[SOF_IPC] = "sof-tgl.ri",
 46		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
 47	},
 48	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
 49	.ops = &sof_tgl_ops,
 50	.ops_init = sof_tgl_ops_init,
 
 51};
 52
 53static const struct sof_dev_desc tglh_desc = {
 54	.machines               = snd_soc_acpi_intel_tgl_machines,
 55	.alt_machines		= snd_soc_acpi_intel_tgl_sdw_machines,
 56	.use_acpi_target_states	= true,
 57	.resindex_lpe_base      = 0,
 58	.resindex_pcicfg_base   = -1,
 59	.resindex_imr_base      = -1,
 60	.irqindex_host_ipc      = -1,
 61	.chip_info = &tglh_chip_info,
 62	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
 63	.ipc_default		= SOF_IPC,
 
 64	.default_fw_path = {
 65		[SOF_IPC] = "intel/sof",
 66		[SOF_INTEL_IPC4] = "intel/avs/tgl-h",
 67	},
 68	.default_lib_path = {
 69		[SOF_INTEL_IPC4] = "intel/avs-lib/tgl-h",
 70	},
 71	.default_tplg_path = {
 72		[SOF_IPC] = "intel/sof-tplg",
 73		[SOF_INTEL_IPC4] = "intel/avs-tplg",
 74	},
 75	.default_fw_filename = {
 76		[SOF_IPC] = "sof-tgl-h.ri",
 77		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
 78	},
 79	.nocodec_tplg_filename = "sof-tgl-nocodec.tplg",
 80	.ops = &sof_tgl_ops,
 81	.ops_init = sof_tgl_ops_init,
 82	.ops_free = hda_ops_free,
 83};
 84
 85static const struct sof_dev_desc ehl_desc = {
 86	.machines               = snd_soc_acpi_intel_ehl_machines,
 87	.use_acpi_target_states	= true,
 88	.resindex_lpe_base      = 0,
 89	.resindex_pcicfg_base   = -1,
 90	.resindex_imr_base      = -1,
 91	.irqindex_host_ipc      = -1,
 92	.chip_info = &ehl_chip_info,
 93	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
 94	.ipc_default		= SOF_IPC,
 
 95	.default_fw_path = {
 96		[SOF_IPC] = "intel/sof",
 97		[SOF_INTEL_IPC4] = "intel/avs/ehl",
 98	},
 99	.default_lib_path = {
100		[SOF_INTEL_IPC4] = "intel/avs-lib/ehl",
101	},
102	.default_tplg_path = {
103		[SOF_IPC] = "intel/sof-tplg",
104		[SOF_INTEL_IPC4] = "intel/avs-tplg",
105	},
106	.default_fw_filename = {
107		[SOF_IPC] = "sof-ehl.ri",
108		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
109	},
110	.nocodec_tplg_filename = "sof-ehl-nocodec.tplg",
111	.ops = &sof_tgl_ops,
112	.ops_init = sof_tgl_ops_init,
 
113};
114
115static const struct sof_dev_desc adls_desc = {
116	.machines               = snd_soc_acpi_intel_adl_machines,
117	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
118	.use_acpi_target_states	= true,
119	.resindex_lpe_base      = 0,
120	.resindex_pcicfg_base   = -1,
121	.resindex_imr_base      = -1,
122	.irqindex_host_ipc      = -1,
123	.chip_info = &adls_chip_info,
124	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
125	.ipc_default		= SOF_IPC,
 
126	.default_fw_path = {
127		[SOF_IPC] = "intel/sof",
128		[SOF_INTEL_IPC4] = "intel/avs/adl-s",
129	},
130	.default_lib_path = {
131		[SOF_INTEL_IPC4] = "intel/avs-lib/adl-s",
132	},
133	.default_tplg_path = {
134		[SOF_IPC] = "intel/sof-tplg",
135		[SOF_INTEL_IPC4] = "intel/avs-tplg",
136	},
137	.default_fw_filename = {
138		[SOF_IPC] = "sof-adl-s.ri",
139		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
140	},
141	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
142	.ops = &sof_tgl_ops,
143	.ops_init = sof_tgl_ops_init,
 
144};
145
146static const struct sof_dev_desc adl_desc = {
147	.machines               = snd_soc_acpi_intel_adl_machines,
148	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
149	.use_acpi_target_states = true,
150	.resindex_lpe_base      = 0,
151	.resindex_pcicfg_base   = -1,
152	.resindex_imr_base      = -1,
153	.irqindex_host_ipc      = -1,
154	.chip_info = &tgl_chip_info,
155	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
156	.ipc_default		= SOF_IPC,
 
157	.default_fw_path = {
158		[SOF_IPC] = "intel/sof",
159		[SOF_INTEL_IPC4] = "intel/avs/adl",
160	},
161	.default_lib_path = {
162		[SOF_INTEL_IPC4] = "intel/avs-lib/adl",
163	},
164	.default_tplg_path = {
165		[SOF_IPC] = "intel/sof-tplg",
166		[SOF_INTEL_IPC4] = "intel/avs-tplg",
167	},
168	.default_fw_filename = {
169		[SOF_IPC] = "sof-adl.ri",
170		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
171	},
172	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
173	.ops = &sof_tgl_ops,
174	.ops_init = sof_tgl_ops_init,
 
175};
176
177static const struct sof_dev_desc adl_n_desc = {
178	.machines               = snd_soc_acpi_intel_adl_machines,
179	.alt_machines           = snd_soc_acpi_intel_adl_sdw_machines,
180	.use_acpi_target_states = true,
181	.resindex_lpe_base      = 0,
182	.resindex_pcicfg_base   = -1,
183	.resindex_imr_base      = -1,
184	.irqindex_host_ipc      = -1,
185	.chip_info = &tgl_chip_info,
186	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
187	.ipc_default		= SOF_IPC,
 
188	.default_fw_path = {
189		[SOF_IPC] = "intel/sof",
190		[SOF_INTEL_IPC4] = "intel/avs/adl-n",
191	},
192	.default_lib_path = {
193		[SOF_INTEL_IPC4] = "intel/avs-lib/adl-n",
194	},
195	.default_tplg_path = {
196		[SOF_IPC] = "intel/sof-tplg",
197		[SOF_INTEL_IPC4] = "intel/avs-tplg",
198	},
199	.default_fw_filename = {
200		[SOF_IPC] = "sof-adl-n.ri",
201		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
202	},
203	.nocodec_tplg_filename = "sof-adl-nocodec.tplg",
204	.ops = &sof_tgl_ops,
205	.ops_init = sof_tgl_ops_init,
 
206};
207
208static const struct sof_dev_desc rpls_desc = {
209	.machines               = snd_soc_acpi_intel_rpl_machines,
210	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
211	.use_acpi_target_states	= true,
212	.resindex_lpe_base      = 0,
213	.resindex_pcicfg_base   = -1,
214	.resindex_imr_base      = -1,
215	.irqindex_host_ipc      = -1,
216	.chip_info = &adls_chip_info,
217	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
218	.ipc_default		= SOF_IPC,
 
219	.default_fw_path = {
220		[SOF_IPC] = "intel/sof",
221		[SOF_INTEL_IPC4] = "intel/avs/rpl-s",
222	},
223	.default_lib_path = {
224		[SOF_INTEL_IPC4] = "intel/avs-lib/rpl-s",
225	},
226	.default_tplg_path = {
227		[SOF_IPC] = "intel/sof-tplg",
228		[SOF_INTEL_IPC4] = "intel/avs-tplg",
229	},
230	.default_fw_filename = {
231		[SOF_IPC] = "sof-rpl-s.ri",
232		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
233	},
234	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
235	.ops = &sof_tgl_ops,
236	.ops_init = sof_tgl_ops_init,
 
237};
238
239static const struct sof_dev_desc rpl_desc = {
240	.machines               = snd_soc_acpi_intel_rpl_machines,
241	.alt_machines           = snd_soc_acpi_intel_rpl_sdw_machines,
242	.use_acpi_target_states = true,
243	.resindex_lpe_base      = 0,
244	.resindex_pcicfg_base   = -1,
245	.resindex_imr_base      = -1,
246	.irqindex_host_ipc      = -1,
247	.chip_info = &tgl_chip_info,
248	.ipc_supported_mask	= BIT(SOF_IPC) | BIT(SOF_INTEL_IPC4),
249	.ipc_default		= SOF_IPC,
 
250	.default_fw_path = {
251		[SOF_IPC] = "intel/sof",
252		[SOF_INTEL_IPC4] = "intel/avs/rpl",
253	},
254	.default_lib_path = {
255		[SOF_INTEL_IPC4] = "intel/avs-lib/rpl",
256	},
257	.default_tplg_path = {
258		[SOF_IPC] = "intel/sof-tplg",
259		[SOF_INTEL_IPC4] = "intel/avs-tplg",
260	},
261	.default_fw_filename = {
262		[SOF_IPC] = "sof-rpl.ri",
263		[SOF_INTEL_IPC4] = "dsp_basefw.bin",
264	},
265	.nocodec_tplg_filename = "sof-rpl-nocodec.tplg",
266	.ops = &sof_tgl_ops,
267	.ops_init = sof_tgl_ops_init,
 
268};
269
270/* PCI IDs */
271static const struct pci_device_id sof_pci_ids[] = {
272	{ PCI_DEVICE(0x8086, 0xa0c8), /* TGL-LP */
273		.driver_data = (unsigned long)&tgl_desc},
274	{ PCI_DEVICE(0x8086, 0x43c8), /* TGL-H */
275		.driver_data = (unsigned long)&tglh_desc},
276	{ PCI_DEVICE(0x8086, 0x4b55), /* EHL */
277		.driver_data = (unsigned long)&ehl_desc},
278	{ PCI_DEVICE(0x8086, 0x4b58), /* EHL */
279		.driver_data = (unsigned long)&ehl_desc},
280	{ PCI_DEVICE(0x8086, 0x7ad0), /* ADL-S */
281		.driver_data = (unsigned long)&adls_desc},
282	{ PCI_DEVICE(0x8086, 0x7a50), /* RPL-S */
283		.driver_data = (unsigned long)&rpls_desc},
284	{ PCI_DEVICE(0x8086, 0x51c8), /* ADL-P */
285		.driver_data = (unsigned long)&adl_desc},
286	{ PCI_DEVICE(0x8086, 0x51c9), /* ADL-PS */
287		.driver_data = (unsigned long)&adl_desc},
288	{ PCI_DEVICE(0x8086, 0x51ca), /* RPL-P */
289		.driver_data = (unsigned long)&rpl_desc},
290	{ PCI_DEVICE(0x8086, 0x51cb), /* RPL-P */
291		.driver_data = (unsigned long)&rpl_desc},
292	{ PCI_DEVICE(0x8086, 0x51cc), /* ADL-M */
293		.driver_data = (unsigned long)&adl_desc},
294	{ PCI_DEVICE(0x8086, 0x51cd), /* ADL-P */
295		.driver_data = (unsigned long)&adl_desc},
296	{ PCI_DEVICE(0x8086, 0x51ce), /* RPL-M */
297		.driver_data = (unsigned long)&rpl_desc},
298	{ PCI_DEVICE(0x8086, 0x51cf), /* RPL-PX */
299		.driver_data = (unsigned long)&rpl_desc},
300	{ PCI_DEVICE(0x8086, 0x54c8), /* ADL-N */
301		.driver_data = (unsigned long)&adl_n_desc},
302	{ 0, }
303};
304MODULE_DEVICE_TABLE(pci, sof_pci_ids);
305
306/* pci_driver definition */
307static struct pci_driver snd_sof_pci_intel_tgl_driver = {
308	.name = "sof-audio-pci-intel-tgl",
309	.id_table = sof_pci_ids,
310	.probe = hda_pci_intel_probe,
311	.remove = sof_pci_remove,
312	.shutdown = sof_pci_shutdown,
313	.driver = {
314		.pm = &sof_pci_pm,
315	},
316};
317module_pci_driver(snd_sof_pci_intel_tgl_driver);
318
319MODULE_LICENSE("Dual BSD/GPL");
320MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);
321MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);