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 12 static const struct snd_soc_acpi_endpoint single_endpoint = { 13 .num = 0, 14 .aggregated = 0, 15 .group_position = 0, 16 .group_id = 0 17 }; 18 19 static 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 26 static 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 33 static 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 54 static 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 63 static 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 76 static 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 97 static 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 106 static 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 115 static 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 124 static 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 138 struct 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 }; 156 EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sdw_machines); 157 158 MODULE_DESCRIPTION("AMD ACP7.0 & ACP7.1 tables and support for ACPI enumeration"); 159 MODULE_LICENSE("GPL"); 160 MODULE_AUTHOR("Vijendar.Mukunda@amd.com"); 161