1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * soc-apci-intel-jsl-match.c - tables and support for JSL ACPI enumeration.
4 *
5 * Copyright (c) 2019-2020, 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
17static const struct snd_soc_acpi_codecs jsl_7219_98373_codecs = {
18	.num_codecs = 1,
19	.codecs = {"MX98373"}
20};
21
22static const struct snd_soc_acpi_codecs rt1015_spk = {
23	.num_codecs = 1,
24	.codecs = {"10EC1015"}
25};
26
27static const struct snd_soc_acpi_codecs rt1015p_spk = {
28	.num_codecs = 1,
29	.codecs = {"RTL1015"}
30};
31
32static const struct snd_soc_acpi_codecs mx98360a_spk = {
33	.num_codecs = 1,
34	.codecs = {"MX98360A"}
35};
36
37static struct snd_soc_acpi_codecs rt5650_spk = {
38	.num_codecs = 1,
39	.codecs = {"10EC5650"}
40};
41
42static const struct snd_soc_acpi_codecs rt5682_rt5682s_hp = {
43	.num_codecs = 2,
44	.codecs = {"10EC5682", "RTL5682"},
45};
46
47/*
48 * When adding new entry to the snd_soc_acpi_intel_jsl_machines array,
49 * use .quirk_data member to distinguish different machine driver,
50 * and keep ACPI .id field unchanged for the common codec.
51 */
52struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
53	{
54		.id = "DLGS7219",
55		.drv_name = "sof_da7219_mx98373",
56		.sof_tplg_filename = "sof-jsl-da7219.tplg",
57		.machine_quirk = snd_soc_acpi_codec_list,
58		.quirk_data = &jsl_7219_98373_codecs,
59	},
60	{
61		.id = "DLGS7219",
62		.drv_name = "sof_da7219_mx98360a",
63		.sof_tplg_filename = "sof-jsl-da7219-mx98360a.tplg",
64	},
65	{
66		.comp_ids = &rt5682_rt5682s_hp,
67		.drv_name = "jsl_rt5682_rt1015",
68		.machine_quirk = snd_soc_acpi_codec_list,
69		.quirk_data = &rt1015_spk,
70		.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
71	},
72	{
73		.comp_ids = &rt5682_rt5682s_hp,
74		.drv_name = "jsl_rt5682_rt1015p",
75		.machine_quirk = snd_soc_acpi_codec_list,
76		.quirk_data = &rt1015p_spk,
77		.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
78	},
79	{
80		.comp_ids = &rt5682_rt5682s_hp,
81		.drv_name = "jsl_rt5682_mx98360",
82		.machine_quirk = snd_soc_acpi_codec_list,
83		.quirk_data = &mx98360a_spk,
84		.sof_tplg_filename = "sof-jsl-rt5682-mx98360a.tplg",
85	},
86	{
87		.comp_ids = &rt5682_rt5682s_hp,
88		.drv_name = "jsl_rt5682",
89		.sof_tplg_filename = "sof-jsl-rt5682.tplg",
90	},
91	{
92		.id = "10134242",
93		.drv_name = "jsl_cs4242_mx98360a",
94		.machine_quirk = snd_soc_acpi_codec_list,
95		.quirk_data = &mx98360a_spk,
96		.sof_tplg_filename = "sof-jsl-cs42l42-mx98360a.tplg",
97	},
98	{
99		.comp_ids = &essx_83x6,
100		.drv_name = "sof-essx8336",
101		.sof_tplg_filename = "sof-jsl-es8336", /* the tplg suffix is added at run time */
102		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
103					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
104					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
105	},
106	{
107		.id = "10EC5650",
108		.drv_name = "jsl_rt5650",
109		.machine_quirk = snd_soc_acpi_codec_list,
110		.quirk_data = &rt5650_spk,
111		.sof_tplg_filename = "sof-jsl-rt5650.tplg",
112	},
113	{},
114};
115EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_jsl_machines);
116