Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/soc/intel/common/soc-acpi-intel-icl-match.c
26493 views
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
12
static const struct snd_soc_acpi_codecs essx_83x6 = {
13
.num_codecs = 3,
14
.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
15
};
16
17
struct 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
};
39
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_machines);
40
41
static const struct snd_soc_acpi_endpoint single_endpoint = {
42
.num = 0,
43
.aggregated = 0,
44
.group_position = 0,
45
.group_id = 0,
46
};
47
48
static 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
55
static 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
62
static 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
71
static 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
80
static 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
89
static 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
98
static 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
107
static 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
116
static 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
125
static 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
149
static 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
168
struct 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
};
189
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_sdw_machines);
190
191