1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-acpi-intel-ptl-match.c - tables and support for PTL ACPI enumeration. 4 * 5 * Copyright (c) 2024, Intel Corporation. 6 * 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 13 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_machines[] = { 14 {}, 15 }; 16 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines); 17 18 static const struct snd_soc_acpi_endpoint single_endpoint = { 19 .num = 0, 20 .aggregated = 0, 21 .group_position = 0, 22 .group_id = 0, 23 }; 24 25 /* 26 * RT722 is a multi-function codec, three endpoints are created for 27 * its headset, amp and dmic functions. 28 */ 29 static const struct snd_soc_acpi_endpoint rt722_endpoints[] = { 30 { 31 .num = 0, 32 .aggregated = 0, 33 .group_position = 0, 34 .group_id = 0, 35 }, 36 { 37 .num = 1, 38 .aggregated = 0, 39 .group_position = 0, 40 .group_id = 0, 41 }, 42 { 43 .num = 2, 44 .aggregated = 0, 45 .group_position = 0, 46 .group_id = 0, 47 }, 48 }; 49 50 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 51 { 52 .adr = 0x000030025D071101ull, 53 .num_endpoints = 1, 54 .endpoints = &single_endpoint, 55 .name_prefix = "rt711" 56 } 57 }; 58 59 static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = { 60 { 61 .adr = 0x000030025d072201ull, 62 .num_endpoints = ARRAY_SIZE(rt722_endpoints), 63 .endpoints = rt722_endpoints, 64 .name_prefix = "rt722" 65 } 66 }; 67 68 static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = { 69 { 70 .adr = 0x000330025d072201ull, 71 .num_endpoints = ARRAY_SIZE(rt722_endpoints), 72 .endpoints = rt722_endpoints, 73 .name_prefix = "rt722" 74 } 75 }; 76 77 static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = { 78 { 79 .mask = BIT(0), 80 .num_adr = ARRAY_SIZE(rt722_0_single_adr), 81 .adr_d = rt722_0_single_adr, 82 }, 83 {} 84 }; 85 86 static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = { 87 { 88 .mask = BIT(3), 89 .num_adr = ARRAY_SIZE(rt722_3_single_adr), 90 .adr_d = rt722_3_single_adr, 91 }, 92 {} 93 }; 94 95 static const struct snd_soc_acpi_link_adr ptl_rvp[] = { 96 { 97 .mask = BIT(0), 98 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 99 .adr_d = rt711_sdca_0_adr, 100 }, 101 {} 102 }; 103 104 /* this table is used when there is no I2S codec present */ 105 struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = { 106 /* mockup tests need to be first */ 107 { 108 .link_mask = GENMASK(3, 0), 109 .links = sdw_mockup_headset_2amps_mic, 110 .drv_name = "sof_sdw", 111 .sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg", 112 }, 113 { 114 .link_mask = BIT(0) | BIT(1) | BIT(3), 115 .links = sdw_mockup_headset_1amp_mic, 116 .drv_name = "sof_sdw", 117 .sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg", 118 }, 119 { 120 .link_mask = GENMASK(2, 0), 121 .links = sdw_mockup_mic_headset_1amp, 122 .drv_name = "sof_sdw", 123 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg", 124 }, 125 { 126 .link_mask = BIT(0), 127 .links = ptl_rvp, 128 .drv_name = "sof_sdw", 129 .sof_tplg_filename = "sof-ptl-rt711.tplg", 130 }, 131 { 132 .link_mask = BIT(0), 133 .links = ptl_rt722_only, 134 .drv_name = "sof_sdw", 135 .sof_tplg_filename = "sof-ptl-rt722.tplg", 136 }, 137 { 138 .link_mask = BIT(3), 139 .links = ptl_rt722_l3, 140 .drv_name = "sof_sdw", 141 .sof_tplg_filename = "sof-ptl-rt722.tplg", 142 }, 143 {}, 144 }; 145 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines); 146