arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / sound / soc / intel / common / soc-acpi-intel-byt-match.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * soc-acpi-intel-byt-match.c - tables and support for BYT ACPI enumeration.
4  *
5  * Copyright (c) 2017, Intel Corporation.
6  */
7
8 #include <linux/dmi.h>
9 #include <sound/soc-acpi.h>
10 #include <sound/soc-acpi-intel-match.h>
11
12 static unsigned long byt_machine_id;
13
14 #define BYT_RT5672       1
15 #define BYT_POV_P1006W   2
16
17 static int byt_rt5672_quirk_cb(const struct dmi_system_id *id)
18 {
19         byt_machine_id = BYT_RT5672;
20         return 1;
21 }
22
23 static int byt_pov_p1006w_quirk_cb(const struct dmi_system_id *id)
24 {
25         byt_machine_id = BYT_POV_P1006W;
26         return 1;
27 }
28
29 static const struct dmi_system_id byt_table[] = {
30         {
31                 .callback = byt_rt5672_quirk_cb,
32                 .matches = {
33                         DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
34                         DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad 8"),
35                 },
36         },
37         {
38                 .callback = byt_rt5672_quirk_cb,
39                 .matches = {
40                         DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
41                         DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad 10"),
42                 },
43         },
44         {
45                 .callback = byt_rt5672_quirk_cb,
46                 .matches = {
47                         DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
48                         DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Tablet B"),
49                 },
50         },
51         {
52                 .callback = byt_rt5672_quirk_cb,
53                 .matches = {
54                         DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
55                         DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Miix 2 10"),
56                 },
57         },
58         {
59                 /* Point of View mobii wintab p1006w (v1.0) */
60                 .callback = byt_pov_p1006w_quirk_cb,
61                 .matches = {
62                         DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
63                         DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
64                         /* Note 105b is Foxcon's USB/PCI vendor id */
65                         DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"),
66                         DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
67                 },
68         },
69         {
70                 /* Aegex 10 tablet (RU2) */
71                 .callback = byt_rt5672_quirk_cb,
72                 .matches = {
73                         DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
74                         DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
75                 },
76         },
77         {
78                 /* Dell Venue 10 Pro 5055 */
79                 .callback = byt_rt5672_quirk_cb,
80                 .matches = {
81                         DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
82                         DMI_MATCH(DMI_PRODUCT_NAME, "Venue 10 Pro 5055"),
83                 },
84         },
85         { }
86 };
87
88 /* Various devices use an ACPI id of 10EC5640 while using a rt5672 codec */
89 static struct snd_soc_acpi_mach byt_rt5672 = {
90         .id = "10EC5640",
91         .drv_name = "cht-bsw-rt5672",
92         .fw_filename = "/*(DEBLOBBED)*/",
93         .board = "cht-bsw",
94         .sof_tplg_filename = "sof-byt-rt5670.tplg",
95 };
96
97 static struct snd_soc_acpi_mach byt_pov_p1006w = {
98         .id = "10EC5640",
99         .drv_name = "bytcr_rt5651",
100         .fw_filename = "/*(DEBLOBBED)*/",
101         .board = "bytcr_rt5651",
102         .sof_tplg_filename = "sof-byt-rt5651.tplg",
103 };
104
105 static struct snd_soc_acpi_mach *byt_quirk(void *arg)
106 {
107         struct snd_soc_acpi_mach *mach = arg;
108
109         dmi_check_system(byt_table);
110
111         switch (byt_machine_id) {
112         case BYT_RT5672:
113                 return &byt_rt5672;
114         case BYT_POV_P1006W:
115                 return &byt_pov_p1006w;
116         default:
117                 return mach;
118         }
119 }
120
121 static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
122         .num_codecs = 3,
123         .codecs = { "10EC5640", "10EC5642", "INTCCFFD"},
124 };
125
126 static const struct snd_soc_acpi_codecs wm5102_comp_ids = {
127         .num_codecs = 3,
128         .codecs = { "10WM5102", "WM510204", "WM510205"},
129 };
130
131 static const struct snd_soc_acpi_codecs da7213_comp_ids = {
132         .num_codecs = 2,
133         .codecs = { "DGLS7212", "DGLS7213"},
134 };
135
136 static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
137         .num_codecs = 2,
138         .codecs = { "10EC5645", "10EC5648"},
139 };
140
141 struct snd_soc_acpi_mach  snd_soc_acpi_intel_baytrail_machines[] = {
142         {
143                 .comp_ids = &rt5640_comp_ids,
144                 .drv_name = "bytcr_rt5640",
145                 .fw_filename = "/*(DEBLOBBED)*/",
146                 .board = "bytcr_rt5640",
147                 .machine_quirk = byt_quirk,
148                 .sof_tplg_filename = "sof-byt-rt5640.tplg",
149         },
150         {
151                 .id = "10EC5651",
152                 .drv_name = "bytcr_rt5651",
153                 .fw_filename = "/*(DEBLOBBED)*/",
154                 .board = "bytcr_rt5651",
155                 .sof_tplg_filename = "sof-byt-rt5651.tplg",
156         },
157         {
158                 .comp_ids = &wm5102_comp_ids,
159                 .drv_name = "bytcr_wm5102",
160                 .fw_filename = "/*(DEBLOBBED)*/",
161                 .board = "bytcr_wm5102",
162                 .sof_tplg_filename = "sof-byt-wm5102.tplg",
163         },
164         {
165                 .comp_ids = &da7213_comp_ids,
166                 .drv_name = "bytcht_da7213",
167                 .fw_filename = "/*(DEBLOBBED)*/",
168                 .board = "bytcht_da7213",
169                 .sof_tplg_filename = "sof-byt-da7213.tplg",
170         },
171         {
172                 .id = "ESSX8316",
173                 .drv_name = "bytcht_es8316",
174                 .fw_filename = "/*(DEBLOBBED)*/",
175                 .board = "bytcht_es8316",
176                 .sof_tplg_filename = "sof-byt-es8316.tplg",
177         },
178         {
179                 .id = "10EC5682",
180                 .drv_name = "sof_rt5682",
181                 .sof_tplg_filename = "sof-byt-rt5682.tplg",
182         },
183         /* some Baytrail platforms rely on RT5645, use CHT machine driver */
184         {
185                 .comp_ids = &rt5645_comp_ids,
186                 .drv_name = "cht-bsw-rt5645",
187                 .fw_filename = "/*(DEBLOBBED)*/",
188                 .board = "cht-bsw",
189                 .sof_tplg_filename = "sof-byt-rt5645.tplg",
190         },
191         /* use CHT driver to Baytrail Chromebooks */
192         {
193                 .id = "193C9890",
194                 .drv_name = "cht-bsw-max98090",
195                 .fw_filename = "/*(DEBLOBBED)*/",
196                 .board = "cht-bsw",
197                 .sof_tplg_filename = "sof-byt-max98090.tplg",
198         },
199         {
200                 .id = "14F10720",
201                 .drv_name = "bytcht_cx2072x",
202                 .fw_filename = "/*(DEBLOBBED)*/",
203                 .board = "bytcht_cx2072x",
204                 .sof_tplg_filename = "sof-byt-cx2072x.tplg",
205         },
206 #if IS_ENABLED(CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH)
207         /*
208          * This is always last in the table so that it is selected only when
209          * enabled explicitly and there is no codec-related information in SSDT
210          */
211         {
212                 .id = "80860F28",
213                 .drv_name = "bytcht_nocodec",
214                 .fw_filename = "/*(DEBLOBBED)*/",
215                 .board = "bytcht_nocodec",
216         },
217 #endif
218         {},
219 };
220 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_baytrail_machines);