brintos

brintos / linux-shallow public Read only

0
0
Text · 10.1 KiB · 01db2e7 Raw
325 lines · c
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 or4// redistributing this file, you may do so under either license.5//6// Copyright(c) 2018-2021 Intel Corporation7//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 adln_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, &adln_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_DESCRIPTION("SOF support for TigerLake platforms");321MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_GENERIC);322MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);323MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_CNL);324MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);325