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