xref: /linux/sound/soc/intel/common/soc-acpi-intel-arl-match.c (revision a3a02a52bcfcbcc4a637d4b68bf1bc391c9fad02)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * soc-apci-intel-arl-match.c - tables and support for ARL ACPI enumeration.
4  *
5  * Copyright (c) 2023 Intel Corporation.
6  */
7 
8 #include <sound/soc-acpi.h>
9 #include <sound/soc-acpi-intel-match.h>
10 
11 static const struct snd_soc_acpi_endpoint single_endpoint = {
12 	.num = 0,
13 	.aggregated = 0,
14 	.group_position = 0,
15 	.group_id = 0,
16 };
17 
18 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
19 	{ /* Jack Playback Endpoint */
20 		.num = 0,
21 		.aggregated = 0,
22 		.group_position = 0,
23 		.group_id = 0,
24 	},
25 	{ /* DMIC Capture Endpoint */
26 		.num = 1,
27 		.aggregated = 0,
28 		.group_position = 0,
29 		.group_id = 0,
30 	},
31 	{ /* Jack Capture Endpoint */
32 		.num = 2,
33 		.aggregated = 0,
34 		.group_position = 0,
35 		.group_id = 0,
36 	},
37 	{ /* Speaker Playback Endpoint */
38 		.num = 3,
39 		.aggregated = 0,
40 		.group_position = 0,
41 		.group_id = 0,
42 	},
43 };
44 
45 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
46 	{
47 		.adr = 0x00003001FA424301ull,
48 		.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
49 		.endpoints = cs42l43_endpoints,
50 		.name_prefix = "cs42l43"
51 	}
52 };
53 
54 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
55 	{
56 		.adr = 0x000020025D071100ull,
57 		.num_endpoints = 1,
58 		.endpoints = &single_endpoint,
59 		.name_prefix = "rt711"
60 	}
61 };
62 
63 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
64 	{
65 		.adr = 0x000030025D071101ull,
66 		.num_endpoints = 1,
67 		.endpoints = &single_endpoint,
68 		.name_prefix = "rt711"
69 	}
70 };
71 
72 static const struct snd_soc_acpi_link_adr arl_cs42l43_l0[] = {
73 	{
74 		.mask = BIT(0),
75 		.num_adr = ARRAY_SIZE(cs42l43_0_adr),
76 		.adr_d = cs42l43_0_adr,
77 	},
78 };
79 
80 static const struct snd_soc_acpi_link_adr arl_rvp[] = {
81 	{
82 		.mask = BIT(0),
83 		.num_adr = ARRAY_SIZE(rt711_0_adr),
84 		.adr_d = rt711_0_adr,
85 	},
86 	{}
87 };
88 
89 static const struct snd_soc_acpi_link_adr arl_sdca_rvp[] = {
90 	{
91 		.mask = BIT(0),
92 		.num_adr = ARRAY_SIZE(rt711_sdca_0_adr),
93 		.adr_d = rt711_sdca_0_adr,
94 	},
95 	{}
96 };
97 
98 struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_machines[] = {
99 	{},
100 };
101 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_machines);
102 
103 /* this table is used when there is no I2S codec present */
104 struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = {
105 	{
106 		.link_mask = BIT(0),
107 		.links = arl_cs42l43_l0,
108 		.drv_name = "sof_sdw",
109 		.sof_tplg_filename = "sof-arl-cs42l43-l0.tplg",
110 	},
111 	{
112 		.link_mask = 0x1, /* link0 required */
113 		.links = arl_rvp,
114 		.drv_name = "sof_sdw",
115 		.sof_tplg_filename = "sof-arl-rt711.tplg",
116 	},
117 	{
118 		.link_mask = 0x1, /* link0 required */
119 		.links = arl_sdca_rvp,
120 		.drv_name = "sof_sdw",
121 		.sof_tplg_filename = "sof-arl-rt711-l0.tplg",
122 	},
123 	{},
124 };
125 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_sdw_machines);
126