111fe58c4SBard Liao // SPDX-License-Identifier: GPL-2.0-only
211fe58c4SBard Liao /*
311fe58c4SBard Liao  * soc-acpi-intel-mtl-match.c - tables and support for MTL ACPI enumeration.
411fe58c4SBard Liao  *
511fe58c4SBard Liao  * Copyright (c) 2022, Intel Corporation.
611fe58c4SBard Liao  *
711fe58c4SBard Liao  */
811fe58c4SBard Liao 
911fe58c4SBard Liao #include <sound/soc-acpi.h>
1011fe58c4SBard Liao #include <sound/soc-acpi-intel-match.h>
1111fe58c4SBard Liao #include "soc-acpi-intel-sdw-mockup-match.h"
1211fe58c4SBard Liao 
13*1f6645b1SYong Zhi static const struct snd_soc_acpi_codecs mtl_max98357a_amp = {
14*1f6645b1SYong Zhi 	.num_codecs = 1,
15*1f6645b1SYong Zhi 	.codecs = {"MX98357A"}
16*1f6645b1SYong Zhi };
17*1f6645b1SYong Zhi 
18*1f6645b1SYong Zhi static const struct snd_soc_acpi_codecs mtl_rt5682_rt5682s_hp = {
19*1f6645b1SYong Zhi 	.num_codecs = 2,
20*1f6645b1SYong Zhi 	.codecs = {"10EC5682", "RTL5682"},
21*1f6645b1SYong Zhi };
22*1f6645b1SYong Zhi 
2311fe58c4SBard Liao struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {
24*1f6645b1SYong Zhi 	{
25*1f6645b1SYong Zhi 		.comp_ids = &mtl_rt5682_rt5682s_hp,
26*1f6645b1SYong Zhi 		.drv_name = "mtl_mx98357_rt5682",
27*1f6645b1SYong Zhi 		.machine_quirk = snd_soc_acpi_codec_list,
28*1f6645b1SYong Zhi 		.quirk_data = &mtl_max98357a_amp,
29*1f6645b1SYong Zhi 		.sof_tplg_filename = "sof-mtl-max98357a-rt5682.tplg",
30*1f6645b1SYong Zhi 	},
3111fe58c4SBard Liao 	{},
3211fe58c4SBard Liao };
3311fe58c4SBard Liao EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);
3411fe58c4SBard Liao 
3518489174SYong Zhi static const struct snd_soc_acpi_endpoint single_endpoint = {
3618489174SYong Zhi 	.num = 0,
3718489174SYong Zhi 	.aggregated = 0,
3818489174SYong Zhi 	.group_position = 0,
3918489174SYong Zhi 	.group_id = 0,
4018489174SYong Zhi };
4118489174SYong Zhi 
4218489174SYong Zhi static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
4318489174SYong Zhi 	{
4418489174SYong Zhi 		.adr = 0x000030025D071101ull,
4518489174SYong Zhi 		.num_endpoints = 1,
4618489174SYong Zhi 		.endpoints = &single_endpoint,
4718489174SYong Zhi 		.name_prefix = "rt711"
4818489174SYong Zhi 	}
4918489174SYong Zhi };
5018489174SYong Zhi 
5118489174SYong Zhi static const struct snd_soc_acpi_link_adr mtl_rvp[] = {
5218489174SYong Zhi 	{
5318489174SYong Zhi 		.mask = BIT(0),
5418489174SYong Zhi 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
5518489174SYong Zhi 		.adr_d = rt711_sdca_0_adr,
5618489174SYong Zhi 	},
5718489174SYong Zhi 	{}
5818489174SYong Zhi };
5918489174SYong Zhi 
6011fe58c4SBard Liao /* this table is used when there is no I2S codec present */
6111fe58c4SBard Liao struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
6211fe58c4SBard Liao 	/* mockup tests need to be first */
6311fe58c4SBard Liao 	{
6411fe58c4SBard Liao 		.link_mask = GENMASK(3, 0),
6511fe58c4SBard Liao 		.links = sdw_mockup_headset_2amps_mic,
6611fe58c4SBard Liao 		.drv_name = "sof_sdw",
6711fe58c4SBard Liao 		.sof_tplg_filename = "sof-mtl-rt711-rt1308-rt715.tplg",
6811fe58c4SBard Liao 	},
6911fe58c4SBard Liao 	{
7011fe58c4SBard Liao 		.link_mask = BIT(0) | BIT(1) | BIT(3),
7111fe58c4SBard Liao 		.links = sdw_mockup_headset_1amp_mic,
7211fe58c4SBard Liao 		.drv_name = "sof_sdw",
7311fe58c4SBard Liao 		.sof_tplg_filename = "sof-mtl-rt711-rt1308-mono-rt715.tplg",
7411fe58c4SBard Liao 	},
7511fe58c4SBard Liao 	{
7611fe58c4SBard Liao 		.link_mask = GENMASK(2, 0),
7711fe58c4SBard Liao 		.links = sdw_mockup_mic_headset_1amp,
7811fe58c4SBard Liao 		.drv_name = "sof_sdw",
7911fe58c4SBard Liao 		.sof_tplg_filename = "sof-mtl-rt715-rt711-rt1308-mono.tplg",
8011fe58c4SBard Liao 	},
8118489174SYong Zhi 	{
8218489174SYong Zhi 		.link_mask = BIT(0),
8318489174SYong Zhi 		.links = mtl_rvp,
8418489174SYong Zhi 		.drv_name = "sof_sdw",
8518489174SYong Zhi 		.sof_tplg_filename = "sof-mtl-rt711.tplg",
8618489174SYong Zhi 	},
8711fe58c4SBard Liao 	{},
8811fe58c4SBard Liao };
8911fe58c4SBard Liao EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);
90