1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * soc-apci-intel-arl-match.c - tables and support for ARL ACPI enumeration. 4 * 5 * Copyright (c) 2023 Intel Corporation. 6 */ 7 8 #include <sound/soc-acpi.h> 9 #include <sound/soc-acpi-intel-match.h> 10 11 static const struct snd_soc_acpi_endpoint single_endpoint = { 12 .num = 0, 13 .aggregated = 0, 14 .group_position = 0, 15 .group_id = 0, 16 }; 17 18 static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = { 19 { /* Jack Playback Endpoint */ 20 .num = 0, 21 .aggregated = 0, 22 .group_position = 0, 23 .group_id = 0, 24 }, 25 { /* DMIC Capture Endpoint */ 26 .num = 1, 27 .aggregated = 0, 28 .group_position = 0, 29 .group_id = 0, 30 }, 31 { /* Jack Capture Endpoint */ 32 .num = 2, 33 .aggregated = 0, 34 .group_position = 0, 35 .group_id = 0, 36 }, 37 { /* Speaker Playback Endpoint */ 38 .num = 3, 39 .aggregated = 0, 40 .group_position = 0, 41 .group_id = 0, 42 }, 43 }; 44 45 static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = { 46 { 47 .adr = 0x00003001FA424301ull, 48 .num_endpoints = ARRAY_SIZE(cs42l43_endpoints), 49 .endpoints = cs42l43_endpoints, 50 .name_prefix = "cs42l43" 51 } 52 }; 53 54 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = { 55 { 56 .adr = 0x000020025D071100ull, 57 .num_endpoints = 1, 58 .endpoints = &single_endpoint, 59 .name_prefix = "rt711" 60 } 61 }; 62 63 static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = { 64 { 65 .adr = 0x000030025D071101ull, 66 .num_endpoints = 1, 67 .endpoints = &single_endpoint, 68 .name_prefix = "rt711" 69 } 70 }; 71 72 static const struct snd_soc_acpi_link_adr arl_cs42l43_l0[] = { 73 { 74 .mask = BIT(0), 75 .num_adr = ARRAY_SIZE(cs42l43_0_adr), 76 .adr_d = cs42l43_0_adr, 77 }, 78 }; 79 80 static const struct snd_soc_acpi_link_adr arl_rvp[] = { 81 { 82 .mask = BIT(0), 83 .num_adr = ARRAY_SIZE(rt711_0_adr), 84 .adr_d = rt711_0_adr, 85 }, 86 {} 87 }; 88 89 static const struct snd_soc_acpi_link_adr arl_sdca_rvp[] = { 90 { 91 .mask = BIT(0), 92 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr), 93 .adr_d = rt711_sdca_0_adr, 94 }, 95 {} 96 }; 97 98 struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_machines[] = { 99 {}, 100 }; 101 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_machines); 102 103 /* this table is used when there is no I2S codec present */ 104 struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = { 105 { 106 .link_mask = BIT(0), 107 .links = arl_cs42l43_l0, 108 .drv_name = "sof_sdw", 109 .sof_tplg_filename = "sof-arl-cs42l43-l0.tplg", 110 }, 111 { 112 .link_mask = 0x1, /* link0 required */ 113 .links = arl_rvp, 114 .drv_name = "sof_sdw", 115 .sof_tplg_filename = "sof-arl-rt711.tplg", 116 }, 117 { 118 .link_mask = 0x1, /* link0 required */ 119 .links = arl_sdca_rvp, 120 .drv_name = "sof_sdw", 121 .sof_tplg_filename = "sof-arl-rt711-l0.tplg", 122 }, 123 {}, 124 }; 125 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_sdw_machines); 126