File Index
Files and directories
Sign in
FILE

soc-acpi-intel-icl-match.c

File preview with syntax highlighting.

linux-6.19.14/sound/soc/intel/common/soc-acpi-intel-icl-match.c C
  1// SPDX-License-Identifier: GPL-2.0-only
  2/*
  3 * soc-acpi-intel-icl-match.c - tables and support for ICL ACPI enumeration.
  4 *
  5 * Copyright (c) 2018, Intel Corporation.
  6 *
  7 */
  8
  9#include <sound/soc-acpi.h>
 10#include <sound/soc-acpi-intel-match.h>
 11
 12static const struct snd_soc_acpi_codecs essx_83x6 = {
 13	.num_codecs = 3,
 14	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
 15};
 16
 17struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_machines[] = {
 18	{
 19		.id = "INT34C2",
 20		.drv_name = "icl_rt274",
 21		.fw_filename = "intel/dsp_fw_icl.bin",
 22		.sof_tplg_filename = "sof-icl-rt274.tplg",
 23	},
 24	{
 25		.id = "10EC5682",
 26		.drv_name = "icl_rt5682_def",
 27		.sof_tplg_filename = "sof-icl-rt5682.tplg",
 28	},
 29	{
 30		.comp_ids = &essx_83x6,
 31		.drv_name = "sof-essx8336",
 32		.sof_tplg_filename = "sof-icl-es8336", /* the tplg suffix is added at run time */
 33		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
 34					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
 35					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
 36	},
 37	{},
 38};
 39EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_machines);
 40
 41static const struct snd_soc_acpi_endpoint single_endpoint = {
 42	.num = 0,
 43	.aggregated = 0,
 44	.group_position = 0,
 45	.group_id = 0,
 46};
 47
 48static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
 49	.num = 0,
 50	.aggregated = 1,
 51	.group_position = 0,
 52	.group_id = 1,
 53};
 54
 55static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
 56	.num = 0,
 57	.aggregated = 1,
 58	.group_position = 1,
 59	.group_id = 1,
 60};
 61
 62static const struct snd_soc_acpi_adr_device rt700_0_adr[] = {
 63	{
 64		.adr = 0x000010025D070000ull,
 65		.num_endpoints = 1,
 66		.endpoints = &single_endpoint,
 67		.name_prefix = "rt700"
 68	}
 69};
 70
 71static const struct snd_soc_acpi_link_adr icl_rvp[] = {
 72	{
 73		.mask = BIT(0),
 74		.num_adr = ARRAY_SIZE(rt700_0_adr),
 75		.adr_d = rt700_0_adr,
 76	},
 77	{}
 78};
 79
 80static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
 81	{
 82		.adr = 0x000020025D071100ull,
 83		.num_endpoints = 1,
 84		.endpoints = &single_endpoint,
 85		.name_prefix = "rt711"
 86	}
 87};
 88
 89static const struct snd_soc_acpi_adr_device rt1308_1_adr[] = {
 90	{
 91		.adr = 0x000120025D130800ull,
 92		.num_endpoints = 1,
 93		.endpoints = &single_endpoint,
 94		.name_prefix = "rt1308-1"
 95	}
 96};
 97
 98static const struct snd_soc_acpi_adr_device rt1308_1_group1_adr[] = {
 99	{
100		.adr = 0x000120025D130800ull,
101		.num_endpoints = 1,
102		.endpoints = &spk_l_endpoint,
103		.name_prefix = "rt1308-1"
104	}
105};
106
107static const struct snd_soc_acpi_adr_device rt1308_2_group1_adr[] = {
108	{
109		.adr = 0x000220025D130800ull,
110		.num_endpoints = 1,
111		.endpoints = &spk_r_endpoint,
112		.name_prefix = "rt1308-2"
113	}
114};
115
116static const struct snd_soc_acpi_adr_device rt715_3_adr[] = {
117	{
118		.adr = 0x000320025D071500ull,
119		.num_endpoints = 1,
120		.endpoints = &single_endpoint,
121		.name_prefix = "rt715"
122	}
123};
124
125static const struct snd_soc_acpi_link_adr icl_3_in_1_default[] = {
126	{
127		.mask = BIT(0),
128		.num_adr = ARRAY_SIZE(rt711_0_adr),
129		.adr_d = rt711_0_adr,
130	},
131	{
132		.mask = BIT(1),
133		.num_adr = ARRAY_SIZE(rt1308_1_group1_adr),
134		.adr_d = rt1308_1_group1_adr,
135	},
136	{
137		.mask = BIT(2),
138		.num_adr = ARRAY_SIZE(rt1308_2_group1_adr),
139		.adr_d = rt1308_2_group1_adr,
140	},
141	{
142		.mask = BIT(3),
143		.num_adr = ARRAY_SIZE(rt715_3_adr),
144		.adr_d = rt715_3_adr,
145	},
146	{}
147};
148
149static const struct snd_soc_acpi_link_adr icl_3_in_1_mono_amp[] = {
150	{
151		.mask = BIT(0),
152		.num_adr = ARRAY_SIZE(rt711_0_adr),
153		.adr_d = rt711_0_adr,
154	},
155	{
156		.mask = BIT(1),
157		.num_adr = ARRAY_SIZE(rt1308_1_adr),
158		.adr_d = rt1308_1_adr,
159	},
160	{
161		.mask = BIT(3),
162		.num_adr = ARRAY_SIZE(rt715_3_adr),
163		.adr_d = rt715_3_adr,
164	},
165	{}
166};
167
168struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_sdw_machines[] = {
169	{
170		.link_mask = 0xF, /* 4 active links required */
171		.links = icl_3_in_1_default,
172		.drv_name = "sof_sdw",
173		.sof_tplg_filename = "sof-icl-rt711-rt1308-rt715.tplg",
174	},
175	{
176		.link_mask = 0xB, /* 3 active links required */
177		.links = icl_3_in_1_mono_amp,
178		.drv_name = "sof_sdw",
179		.sof_tplg_filename = "sof-icl-rt711-rt1308-rt715-mono.tplg",
180	},
181	{
182		.link_mask = 0x1, /* rt700 connected on link0 */
183		.links = icl_rvp,
184		.drv_name = "sof_sdw",
185		.sof_tplg_filename = "sof-icl-rt700.tplg",
186	},
187	{},
188};
189EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_sdw_machines);
~/ Read-only file preview.