1// SPDX-License-Identifier: GPL-2.0-only
2//
3// soc-acpi-intel-sdw-mockup-match.c - tables and support for SoundWire
4// mockup device ACPI enumeration.
5//
6// Copyright (c) 2021, Intel Corporation.
7//
8
9#include <sound/soc-acpi.h>
10#include <sound/soc-acpi-intel-match.h>
11#include "soc-acpi-intel-sdw-mockup-match.h"
12
13static const struct snd_soc_acpi_endpoint sdw_mockup_single_endpoint = {
14	.num = 0,
15	.aggregated = 0,
16	.group_position = 0,
17	.group_id = 0,
18};
19
20static const struct snd_soc_acpi_endpoint sdw_mockup_l_endpoint = {
21	.num = 0,
22	.aggregated = 1,
23	.group_position = 0,
24	.group_id = 1,
25};
26
27static const struct snd_soc_acpi_endpoint sdw_mockup_r_endpoint = {
28	.num = 0,
29	.aggregated = 1,
30	.group_position = 1,
31	.group_id = 1,
32};
33
34static const struct snd_soc_acpi_adr_device sdw_mockup_headset_0_adr[] = {
35	{
36		.adr = 0x0000000105AA5500ull,
37		.num_endpoints = 1,
38		.endpoints = &sdw_mockup_single_endpoint,
39		.name_prefix = "sdw_mockup_headset0"
40	}
41};
42
43static const struct snd_soc_acpi_adr_device sdw_mockup_headset_1_adr[] = {
44	{
45		.adr = 0x0001000105AA5500ull,
46		.num_endpoints = 1,
47		.endpoints = &sdw_mockup_single_endpoint,
48		.name_prefix = "sdw_mockup_headset1"
49	}
50};
51
52static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_adr[] = {
53	{
54		.adr = 0x000100010555AA00ull,
55		.num_endpoints = 1,
56		.endpoints = &sdw_mockup_single_endpoint,
57		.name_prefix = "sdw_mockup_amp1"
58	}
59};
60
61static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_adr[] = {
62	{
63		.adr = 0x000200010555AA00ull,
64		.num_endpoints = 1,
65		.endpoints = &sdw_mockup_single_endpoint,
66		.name_prefix = "sdw_mockup_amp2"
67	}
68};
69
70static const struct snd_soc_acpi_adr_device sdw_mockup_mic_0_adr[] = {
71	{
72		.adr = 0x0000000105555500ull,
73		.num_endpoints = 1,
74		.endpoints = &sdw_mockup_single_endpoint,
75		.name_prefix = "sdw_mockup_mic0"
76	}
77};
78
79static const struct snd_soc_acpi_adr_device sdw_mockup_mic_3_adr[] = {
80	{
81		.adr = 0x0003000105555500ull,
82		.num_endpoints = 1,
83		.endpoints = &sdw_mockup_single_endpoint,
84		.name_prefix = "sdw_mockup_mic3"
85	}
86};
87
88static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_group1_adr[] = {
89	{
90		.adr = 0x000100010555AA00ull,
91		.num_endpoints = 1,
92		.endpoints = &sdw_mockup_l_endpoint,
93		.name_prefix = "sdw_mockup_amp1_l"
94	}
95};
96
97static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_group1_adr[] = {
98	{
99		.adr = 0x000200010555AA00ull,
100		.num_endpoints = 1,
101		.endpoints = &sdw_mockup_r_endpoint,
102		.name_prefix = "sdw_mockup_amp2_r"
103	}
104};
105
106const struct snd_soc_acpi_link_adr sdw_mockup_headset_1amp_mic[] = {
107	{
108		.mask = BIT(0),
109		.num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),
110		.adr_d = sdw_mockup_headset_0_adr,
111	},
112	{
113		.mask = BIT(1),
114		.num_adr = ARRAY_SIZE(sdw_mockup_amp_1_adr),
115		.adr_d = sdw_mockup_amp_1_adr,
116	},
117	{
118		.mask = BIT(3),
119		.num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),
120		.adr_d = sdw_mockup_mic_3_adr,
121	},
122	{}
123};
124
125const struct snd_soc_acpi_link_adr sdw_mockup_headset_2amps_mic[] = {
126	{
127		.mask = BIT(0),
128		.num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),
129		.adr_d = sdw_mockup_headset_0_adr,
130	},
131	{
132		.mask = BIT(1),
133		.num_adr = ARRAY_SIZE(sdw_mockup_amp_1_group1_adr),
134		.adr_d = sdw_mockup_amp_1_group1_adr,
135	},
136	{
137		.mask = BIT(2),
138		.num_adr = ARRAY_SIZE(sdw_mockup_amp_2_group1_adr),
139		.adr_d = sdw_mockup_amp_2_group1_adr,
140	},
141	{
142		.mask = BIT(3),
143		.num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),
144		.adr_d = sdw_mockup_mic_3_adr,
145	},
146	{}
147};
148
149const struct snd_soc_acpi_link_adr sdw_mockup_mic_headset_1amp[] = {
150	{
151		.mask = BIT(1),
152		.num_adr = ARRAY_SIZE(sdw_mockup_headset_1_adr),
153		.adr_d = sdw_mockup_headset_1_adr,
154	},
155	{
156		.mask = BIT(2),
157		.num_adr = ARRAY_SIZE(sdw_mockup_amp_2_adr),
158		.adr_d = sdw_mockup_amp_2_adr,
159	},
160	{
161		.mask = BIT(0),
162		.num_adr = ARRAY_SIZE(sdw_mockup_mic_0_adr),
163		.adr_d = sdw_mockup_mic_0_adr,
164	},
165	{}
166};
167