1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * amd-acp70-acpi-match.c - tables and support for ACP 7.0 & ACP7.1
4 * ACPI enumeration.
5 *
6 * Copyright 2025 Advanced Micro Devices, Inc.
7 */
8
9#include <sound/soc-acpi.h>
10#include "../mach-config.h"
11
12static const struct snd_soc_acpi_endpoint single_endpoint = {
13 .num = 0,
14 .aggregated = 0,
15 .group_position = 0,
16 .group_id = 0
17};
18
19static const struct snd_soc_acpi_endpoint spk_l_endpoint = {
20 .num = 0,
21 .aggregated = 1,
22 .group_position = 0,
23 .group_id = 1
24};
25
26static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
27 .num = 0,
28 .aggregated = 1,
29 .group_position = 1,
30 .group_id = 1
31};
32
33static const struct snd_soc_acpi_adr_device rt711_rt1316_group_adr[] = {
34 {
35 .adr = 0x000030025D071101ull,
36 .num_endpoints = 1,
37 .endpoints = &single_endpoint,
38 .name_prefix = "rt711"
39 },
40 {
41 .adr = 0x000030025D131601ull,
42 .num_endpoints = 1,
43 .endpoints = &spk_l_endpoint,
44 .name_prefix = "rt1316-1"
45 },
46 {
47 .adr = 0x000032025D131601ull,
48 .num_endpoints = 1,
49 .endpoints = &spk_r_endpoint,
50 .name_prefix = "rt1316-2"
51 },
52};
53
54static const struct snd_soc_acpi_adr_device rt714_adr[] = {
55 {
56 .adr = 0x130025d071401ull,
57 .num_endpoints = 1,
58 .endpoints = &single_endpoint,
59 .name_prefix = "rt714"
60 }
61};
62
63static const struct snd_soc_acpi_link_adr acp70_4_in_1_sdca[] = {
64 { .mask = BIT(0),
65 .num_adr = ARRAY_SIZE(rt711_rt1316_group_adr),
66 .adr_d = rt711_rt1316_group_adr,
67 },
68 {
69 .mask = BIT(1),
70 .num_adr = ARRAY_SIZE(rt714_adr),
71 .adr_d = rt714_adr,
72 },
73 {}
74};
75
76static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {
77 {
78 .num = 0,
79 .aggregated = 0,
80 .group_position = 0,
81 .group_id = 0,
82 },
83 {
84 .num = 1,
85 .aggregated = 0,
86 .group_position = 0,
87 .group_id = 0,
88 },
89 {
90 .num = 2,
91 .aggregated = 0,
92 .group_position = 0,
93 .group_id = 0,
94 },
95};
96
97static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {
98 {
99 .adr = 0x000030025d072201ull,
100 .num_endpoints = ARRAY_SIZE(rt722_endpoints),
101 .endpoints = rt722_endpoints,
102 .name_prefix = "rt722"
103 }
104};
105
106static const struct snd_soc_acpi_adr_device rt1320_1_single_adr[] = {
107 {
108 .adr = 0x000130025D132001ull,
109 .num_endpoints = 1,
110 .endpoints = &single_endpoint,
111 .name_prefix = "rt1320-1"
112 }
113};
114
115static const struct snd_soc_acpi_link_adr acp70_rt722_only[] = {
116 {
117 .mask = BIT(0),
118 .num_adr = ARRAY_SIZE(rt722_0_single_adr),
119 .adr_d = rt722_0_single_adr,
120 },
121 {}
122};
123
124static const struct snd_soc_acpi_link_adr acp70_rt722_l0_rt1320_l1[] = {
125 {
126 .mask = BIT(0),
127 .num_adr = ARRAY_SIZE(rt722_0_single_adr),
128 .adr_d = rt722_0_single_adr,
129 },
130 {
131 .mask = BIT(1),
132 .num_adr = ARRAY_SIZE(rt1320_1_single_adr),
133 .adr_d = rt1320_1_single_adr,
134 },
135 {}
136};
137
138struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
139 {
140 .link_mask = BIT(0) | BIT(1),
141 .links = acp70_rt722_l0_rt1320_l1,
142 .drv_name = "amd_sdw",
143 },
144 {
145 .link_mask = BIT(0),
146 .links = acp70_rt722_only,
147 .drv_name = "amd_sdw",
148 },
149 {
150 .link_mask = BIT(0) | BIT(1),
151 .links = acp70_4_in_1_sdca,
152 .drv_name = "amd_sdw",
153 },
154 {},
155};
156EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sdw_machines);
157
158MODULE_DESCRIPTION("AMD ACP7.0 & ACP7.1 tables and support for ACPI enumeration");
159MODULE_LICENSE("GPL");
160MODULE_AUTHOR("Vijendar.Mukunda@amd.com");
161

source code of linux/sound/soc/amd/acp/amd-acp70-acpi-match.c