xref: /linux/sound/soc/intel/common/soc-acpi-intel-cnl-match.c (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1e149ca29SPierre-Louis Bossart // SPDX-License-Identifier: GPL-2.0-only
2cbaa7f0bSPierre-Louis Bossart /*
3e51b6980SChristophe JAILLET  * soc-acpi-intel-cnl-match.c - tables and support for CNL ACPI enumeration.
4cbaa7f0bSPierre-Louis Bossart  *
5cbaa7f0bSPierre-Louis Bossart  * Copyright (c) 2018, Intel Corporation.
6cbaa7f0bSPierre-Louis Bossart  *
7cbaa7f0bSPierre-Louis Bossart  */
8cbaa7f0bSPierre-Louis Bossart 
9cbaa7f0bSPierre-Louis Bossart #include <sound/soc-acpi.h>
10cbaa7f0bSPierre-Louis Bossart #include <sound/soc-acpi-intel-match.h>
112694cda7SPierre-Louis Bossart #include "soc-acpi-intel-sdw-mockup-match.h"
12cbaa7f0bSPierre-Louis Bossart 
13*b3d6a072SNikolai Kostrigin static const struct snd_soc_acpi_codecs essx_83x6 = {
14*b3d6a072SNikolai Kostrigin 	.num_codecs = 3,
15*b3d6a072SNikolai Kostrigin 	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
16*b3d6a072SNikolai Kostrigin };
17*b3d6a072SNikolai Kostrigin 
18cbaa7f0bSPierre-Louis Bossart struct snd_soc_acpi_mach snd_soc_acpi_intel_cnl_machines[] = {
19cbaa7f0bSPierre-Louis Bossart 	{
20cbaa7f0bSPierre-Louis Bossart 		.id = "INT34C2",
21cbaa7f0bSPierre-Louis Bossart 		.drv_name = "cnl_rt274",
22cbaa7f0bSPierre-Louis Bossart 		.fw_filename = "intel/dsp_fw_cnl.bin",
237466e749SPierre-Louis Bossart 		.sof_tplg_filename = "sof-cnl-rt274.tplg",
24cbaa7f0bSPierre-Louis Bossart 	},
25*b3d6a072SNikolai Kostrigin 	{
26*b3d6a072SNikolai Kostrigin 		.comp_ids = &essx_83x6,
27*b3d6a072SNikolai Kostrigin 		.drv_name = "sof-essx8336",
28*b3d6a072SNikolai Kostrigin 		/* cnl and cml are identical */
29*b3d6a072SNikolai Kostrigin 		.sof_tplg_filename = "sof-cml-es8336", /* the tplg suffix is added at run time */
30*b3d6a072SNikolai Kostrigin 		.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
31*b3d6a072SNikolai Kostrigin 					SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
32*b3d6a072SNikolai Kostrigin 					SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
33*b3d6a072SNikolai Kostrigin 	},
34cbaa7f0bSPierre-Louis Bossart 	{},
35cbaa7f0bSPierre-Louis Bossart };
36cbaa7f0bSPierre-Louis Bossart EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_cnl_machines);
37cbaa7f0bSPierre-Louis Bossart 
386f7cf912SPierre-Louis Bossart static const struct snd_soc_acpi_endpoint single_endpoint = {
396f7cf912SPierre-Louis Bossart 	.num = 0,
406f7cf912SPierre-Louis Bossart 	.aggregated = 0,
416f7cf912SPierre-Louis Bossart 	.group_position = 0,
426f7cf912SPierre-Louis Bossart 	.group_id = 0,
436f7cf912SPierre-Louis Bossart };
446f7cf912SPierre-Louis Bossart 
456f7cf912SPierre-Louis Bossart static const struct snd_soc_acpi_adr_device rt5682_2_adr[] = {
466f7cf912SPierre-Louis Bossart 	{
470c52d3e2SPierre-Louis Bossart 		.adr = 0x000220025D568200ull,
486f7cf912SPierre-Louis Bossart 		.num_endpoints = 1,
496f7cf912SPierre-Louis Bossart 		.endpoints = &single_endpoint,
50f9380830SPierre-Louis Bossart 		.name_prefix = "rt5682"
516f7cf912SPierre-Louis Bossart 	}
526f7cf912SPierre-Louis Bossart };
536f7cf912SPierre-Louis Bossart 
546f7cf912SPierre-Louis Bossart static const struct snd_soc_acpi_link_adr up_extreme_rt5682_2[] = {
556f7cf912SPierre-Louis Bossart 	{
566f7cf912SPierre-Louis Bossart 		.mask = BIT(2),
576f7cf912SPierre-Louis Bossart 		.num_adr = ARRAY_SIZE(rt5682_2_adr),
586f7cf912SPierre-Louis Bossart 		.adr_d = rt5682_2_adr,
596f7cf912SPierre-Louis Bossart 	},
606f7cf912SPierre-Louis Bossart 	{}
616f7cf912SPierre-Louis Bossart };
626f7cf912SPierre-Louis Bossart 
63db0b9efbSRander Wang struct snd_soc_acpi_mach snd_soc_acpi_intel_cnl_sdw_machines[] = {
646f7cf912SPierre-Louis Bossart 	{
656f7cf912SPierre-Louis Bossart 		.link_mask = BIT(2),
666f7cf912SPierre-Louis Bossart 		.links = up_extreme_rt5682_2,
676f7cf912SPierre-Louis Bossart 		.drv_name = "sof_sdw",
686f7cf912SPierre-Louis Bossart 		.sof_tplg_filename = "sof-cnl-rt5682-sdw2.tplg"
696f7cf912SPierre-Louis Bossart 	},
702694cda7SPierre-Louis Bossart 	{
712694cda7SPierre-Louis Bossart 		.link_mask = GENMASK(3, 0),
722694cda7SPierre-Louis Bossart 		.links = sdw_mockup_headset_2amps_mic,
732694cda7SPierre-Louis Bossart 		.drv_name = "sof_sdw",
742694cda7SPierre-Louis Bossart 		.sof_tplg_filename = "sof-cml-rt711-rt1308-rt715.tplg",
752694cda7SPierre-Louis Bossart 	},
762694cda7SPierre-Louis Bossart 	{
772694cda7SPierre-Louis Bossart 		.link_mask = BIT(0) | BIT(1) | BIT(3),
782694cda7SPierre-Louis Bossart 		.links = sdw_mockup_headset_1amp_mic,
792694cda7SPierre-Louis Bossart 		.drv_name = "sof_sdw",
802694cda7SPierre-Louis Bossart 		.sof_tplg_filename = "sof-cml-rt711-rt1308-mono-rt715.tplg",
812694cda7SPierre-Louis Bossart 	},
826f7cf912SPierre-Louis Bossart 	{}
83db0b9efbSRander Wang };
84db0b9efbSRander Wang EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_cnl_sdw_machines);
85