brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · 6ce75fb Raw
190 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*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 12static const struct snd_soc_acpi_codecs essx_83x6 = {13	.num_codecs = 3,14	.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},15};16 17struct 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};39EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_machines);40 41static const struct snd_soc_acpi_endpoint single_endpoint = {42	.num = 0,43	.aggregated = 0,44	.group_position = 0,45	.group_id = 0,46};47 48static 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 55static 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 62static 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 71static 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 80static 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 89static 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 98static 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 107static 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 116static 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 125static 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 149static 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 168struct 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};189EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_sdw_machines);190