1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * amd-acp63-acpi-match.c - tables and support for ACP 6.3 platform 4 * ACPI enumeration. 5 * 6 * Copyright 2024 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 acp63_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_link_adr acp63_rt722_only[] = { 107 { 108 .mask = BIT(0), 109 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 110 .adr_d = rt722_0_single_adr, 111 }, 112 {} 113 }; 114 115 struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sof_sdw_machines[] = { 116 { 117 .link_mask = BIT(0) | BIT(1), 118 .links = acp63_4_in_1_sdca, 119 .drv_name = "amd_sof_sdw", 120 .sof_tplg_filename = "sof-acp_6_3-rt711-l0-rt1316-l0-rt714-l1.tplg", 121 .fw_filename = "sof-acp_6_3.ri", 122 }, 123 {}, 124 }; 125 EXPORT_SYMBOL(snd_soc_acpi_amd_acp63_sof_sdw_machines); 126 127 struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sdw_machines[] = { 128 { 129 .link_mask = BIT(0), 130 .links = acp63_rt722_only, 131 .drv_name = "amd_sdw", 132 }, 133 { 134 .link_mask = BIT(0) | BIT(1), 135 .links = acp63_4_in_1_sdca, 136 .drv_name = "amd_sdw", 137 }, 138 {}, 139 }; 140 EXPORT_SYMBOL(snd_soc_acpi_amd_acp63_sdw_machines); 141 142 MODULE_DESCRIPTION("AMD ACP6.3 tables and support for ACPI enumeration"); 143 MODULE_LICENSE("GPL"); 144 MODULE_AUTHOR("Vijendar.Mukunda@amd.com"); 145