1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * soc-acpi-intel-icl-match.c - tables and support for ICL ACPI enumeration. 4 * 5 * Copyright (c) 2018, Intel Corporation. 6 * 7 */ 8 9 #include <sound/soc-acpi.h> 10 #include <sound/soc-acpi-intel-match.h> 11 #include "../skylake/skl.h" 12 13 static struct skl_machine_pdata icl_pdata = { 14 .use_tplg_pcm = true, 15 }; 16 17 struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_machines[] = { 18 { 19 .id = "INT34C2", 20 .drv_name = "icl_rt274", 21 .fw_filename = "intel/dsp_fw_icl.bin", 22 .pdata = &icl_pdata, 23 .sof_fw_filename = "sof-icl.ri", 24 .sof_tplg_filename = "sof-icl-rt274.tplg", 25 }, 26 { 27 .id = "10EC5682", 28 .drv_name = "sof_rt5682", 29 .sof_fw_filename = "sof-icl.ri", 30 .sof_tplg_filename = "sof-icl-rt5682.tplg", 31 }, 32 {}, 33 }; 34 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_machines); 35 36 static const u64 rt700_0_adr[] = { 37 0x000010025D070000 38 }; 39 40 static const struct snd_soc_acpi_link_adr icl_rvp[] = { 41 { 42 .mask = BIT(0), 43 .num_adr = ARRAY_SIZE(rt700_0_adr), 44 .adr = rt700_0_adr, 45 }, 46 {} 47 }; 48 49 static const u64 rt711_0_adr[] = { 50 0x000010025D071100 51 }; 52 53 static const u64 rt1308_1_adr[] = { 54 0x000110025D130800 55 }; 56 57 static const u64 rt1308_2_adr[] = { 58 0x000210025D130800 59 }; 60 61 static const u64 rt715_3_adr[] = { 62 0x000310025D071500 63 }; 64 65 static const struct snd_soc_acpi_link_adr icl_3_in_1_default[] = { 66 { 67 .mask = BIT(0), 68 .num_adr = ARRAY_SIZE(rt711_0_adr), 69 .adr = rt711_0_adr, 70 }, 71 { 72 .mask = BIT(1), 73 .num_adr = ARRAY_SIZE(rt1308_1_adr), 74 .adr = rt1308_1_adr, 75 }, 76 { 77 .mask = BIT(2), 78 .num_adr = ARRAY_SIZE(rt1308_2_adr), 79 .adr = rt1308_2_adr, 80 }, 81 { 82 .mask = BIT(3), 83 .num_adr = ARRAY_SIZE(rt715_3_adr), 84 .adr = rt715_3_adr, 85 }, 86 {} 87 }; 88 89 static const struct snd_soc_acpi_link_adr icl_3_in_1_mono_amp[] = { 90 { 91 .mask = BIT(0), 92 .num_adr = ARRAY_SIZE(rt711_0_adr), 93 .adr = rt711_0_adr, 94 }, 95 { 96 .mask = BIT(1), 97 .num_adr = ARRAY_SIZE(rt1308_1_adr), 98 .adr = rt1308_1_adr, 99 }, 100 { 101 .mask = BIT(3), 102 .num_adr = ARRAY_SIZE(rt715_3_adr), 103 .adr = rt715_3_adr, 104 }, 105 {} 106 }; 107 108 struct snd_soc_acpi_mach snd_soc_acpi_intel_icl_sdw_machines[] = { 109 { 110 .link_mask = 0xF, /* 4 active links required */ 111 .links = icl_3_in_1_default, 112 .drv_name = "sdw_rt711_rt1308_rt715", 113 .sof_fw_filename = "sof-icl.ri", 114 .sof_tplg_filename = "sof-icl-rt711-rt1308-rt715.tplg", 115 }, 116 { 117 .link_mask = 0xB, /* 3 active links required */ 118 .links = icl_3_in_1_mono_amp, 119 .drv_name = "sdw_rt711_rt1308_rt715", 120 .sof_fw_filename = "sof-icl.ri", 121 .sof_tplg_filename = "sof-icl-rt711-rt1308-rt715-mono.tplg", 122 }, 123 { 124 .link_mask = 0x1, /* rt700 connected on link0 */ 125 .links = icl_rvp, 126 .drv_name = "sdw_rt700", 127 .sof_fw_filename = "sof-icl.ri", 128 .sof_tplg_filename = "sof-icl-rt700.tplg", 129 }, 130 {}, 131 }; 132 EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_icl_sdw_machines); 133 134 MODULE_LICENSE("GPL v2"); 135 MODULE_DESCRIPTION("Intel Common ACPI Match module"); 136