1 // SPDX-License-Identifier: (GPL-2.0-only OR B 1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 2 // 2 // 3 // This file is provided under a dual BSD/GPLv 3 // This file is provided under a dual BSD/GPLv2 license. When using or 4 // redistributing this file, you may do so und 4 // redistributing this file, you may do so under either license. 5 // 5 // 6 // Copyright(c) 2018-2021 Intel Corporation 6 // Copyright(c) 2018-2021 Intel Corporation 7 // 7 // 8 // Author: Liam Girdwood <liam.r.girdwood@linu 8 // Author: Liam Girdwood <liam.r.girdwood@linux.intel.com> 9 // 9 // 10 10 11 #include <linux/module.h> 11 #include <linux/module.h> 12 #include <linux/pci.h> 12 #include <linux/pci.h> 13 #include <sound/soc-acpi.h> 13 #include <sound/soc-acpi.h> 14 #include <sound/soc-acpi-intel-match.h> 14 #include <sound/soc-acpi-intel-match.h> 15 #include <sound/sof.h> 15 #include <sound/sof.h> 16 #include "../ops.h" 16 #include "../ops.h" 17 #include "../sof-pci-dev.h" 17 #include "../sof-pci-dev.h" 18 18 19 /* platform specific devices */ 19 /* platform specific devices */ 20 #include "hda.h" 20 #include "hda.h" 21 21 22 static const struct sof_dev_desc tgl_desc = { 22 static const struct sof_dev_desc tgl_desc = { 23 .machines = snd_soc_acpi 23 .machines = snd_soc_acpi_intel_tgl_machines, 24 .alt_machines = snd_soc_acpi 24 .alt_machines = snd_soc_acpi_intel_tgl_sdw_machines, 25 .use_acpi_target_states = true, 25 .use_acpi_target_states = true, 26 .resindex_lpe_base = 0, 26 .resindex_lpe_base = 0, 27 .resindex_pcicfg_base = -1, 27 .resindex_pcicfg_base = -1, 28 .resindex_imr_base = -1, 28 .resindex_imr_base = -1, 29 .irqindex_host_ipc = -1, 29 .irqindex_host_ipc = -1, 30 .chip_info = &tgl_chip_info, 30 .chip_info = &tgl_chip_info, 31 .ipc_supported_mask = BIT(SOF_IPC_ 31 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 32 .ipc_default = SOF_IPC_TYPE 32 .ipc_default = SOF_IPC_TYPE_3, 33 .dspless_mode_supported = true, 33 .dspless_mode_supported = true, /* Only supported for HDaudio */ 34 .default_fw_path = { 34 .default_fw_path = { 35 [SOF_IPC_TYPE_3] = "intel/sof" 35 [SOF_IPC_TYPE_3] = "intel/sof", 36 [SOF_IPC_TYPE_4] = "intel/sof- 36 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/tgl", 37 }, 37 }, 38 .default_lib_path = { 38 .default_lib_path = { 39 [SOF_IPC_TYPE_4] = "intel/sof- 39 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/tgl", 40 }, 40 }, 41 .default_tplg_path = { 41 .default_tplg_path = { 42 [SOF_IPC_TYPE_3] = "intel/sof- 42 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 43 [SOF_IPC_TYPE_4] = "intel/sof- 43 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 44 }, 44 }, 45 .default_fw_filename = { 45 .default_fw_filename = { 46 [SOF_IPC_TYPE_3] = "sof-tgl.ri 46 [SOF_IPC_TYPE_3] = "sof-tgl.ri", 47 [SOF_IPC_TYPE_4] = "sof-tgl.ri 47 [SOF_IPC_TYPE_4] = "sof-tgl.ri", 48 }, 48 }, 49 .nocodec_tplg_filename = "sof-tgl-noco 49 .nocodec_tplg_filename = "sof-tgl-nocodec.tplg", 50 .ops = &sof_tgl_ops, 50 .ops = &sof_tgl_ops, 51 .ops_init = sof_tgl_ops_init, 51 .ops_init = sof_tgl_ops_init, 52 .ops_free = hda_ops_free, 52 .ops_free = hda_ops_free, 53 }; 53 }; 54 54 55 static const struct sof_dev_desc tglh_desc = { 55 static const struct sof_dev_desc tglh_desc = { 56 .machines = snd_soc_acpi 56 .machines = snd_soc_acpi_intel_tgl_machines, 57 .alt_machines = snd_soc_acpi 57 .alt_machines = snd_soc_acpi_intel_tgl_sdw_machines, 58 .use_acpi_target_states = true, 58 .use_acpi_target_states = true, 59 .resindex_lpe_base = 0, 59 .resindex_lpe_base = 0, 60 .resindex_pcicfg_base = -1, 60 .resindex_pcicfg_base = -1, 61 .resindex_imr_base = -1, 61 .resindex_imr_base = -1, 62 .irqindex_host_ipc = -1, 62 .irqindex_host_ipc = -1, 63 .chip_info = &tglh_chip_info, 63 .chip_info = &tglh_chip_info, 64 .ipc_supported_mask = BIT(SOF_IPC_ 64 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 65 .ipc_default = SOF_IPC_TYPE 65 .ipc_default = SOF_IPC_TYPE_3, 66 .dspless_mode_supported = true, 66 .dspless_mode_supported = true, /* Only supported for HDaudio */ 67 .default_fw_path = { 67 .default_fw_path = { 68 [SOF_IPC_TYPE_3] = "intel/sof" 68 [SOF_IPC_TYPE_3] = "intel/sof", 69 [SOF_IPC_TYPE_4] = "intel/sof- 69 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/tgl-h", 70 }, 70 }, 71 .default_lib_path = { 71 .default_lib_path = { 72 [SOF_IPC_TYPE_4] = "intel/sof- 72 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/tgl-h", 73 }, 73 }, 74 .default_tplg_path = { 74 .default_tplg_path = { 75 [SOF_IPC_TYPE_3] = "intel/sof- 75 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 76 [SOF_IPC_TYPE_4] = "intel/sof- 76 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 77 }, 77 }, 78 .default_fw_filename = { 78 .default_fw_filename = { 79 [SOF_IPC_TYPE_3] = "sof-tgl-h. 79 [SOF_IPC_TYPE_3] = "sof-tgl-h.ri", 80 [SOF_IPC_TYPE_4] = "sof-tgl-h. 80 [SOF_IPC_TYPE_4] = "sof-tgl-h.ri", 81 }, 81 }, 82 .nocodec_tplg_filename = "sof-tgl-noco 82 .nocodec_tplg_filename = "sof-tgl-nocodec.tplg", 83 .ops = &sof_tgl_ops, 83 .ops = &sof_tgl_ops, 84 .ops_init = sof_tgl_ops_init, 84 .ops_init = sof_tgl_ops_init, 85 .ops_free = hda_ops_free, 85 .ops_free = hda_ops_free, 86 }; 86 }; 87 87 88 static const struct sof_dev_desc ehl_desc = { 88 static const struct sof_dev_desc ehl_desc = { 89 .machines = snd_soc_acpi 89 .machines = snd_soc_acpi_intel_ehl_machines, 90 .use_acpi_target_states = true, 90 .use_acpi_target_states = true, 91 .resindex_lpe_base = 0, 91 .resindex_lpe_base = 0, 92 .resindex_pcicfg_base = -1, 92 .resindex_pcicfg_base = -1, 93 .resindex_imr_base = -1, 93 .resindex_imr_base = -1, 94 .irqindex_host_ipc = -1, 94 .irqindex_host_ipc = -1, 95 .chip_info = &ehl_chip_info, 95 .chip_info = &ehl_chip_info, 96 .ipc_supported_mask = BIT(SOF_IPC_ 96 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 97 .ipc_default = SOF_IPC_TYPE 97 .ipc_default = SOF_IPC_TYPE_3, 98 .dspless_mode_supported = true, 98 .dspless_mode_supported = true, /* Only supported for HDaudio */ 99 .default_fw_path = { 99 .default_fw_path = { 100 [SOF_IPC_TYPE_3] = "intel/sof" 100 [SOF_IPC_TYPE_3] = "intel/sof", 101 [SOF_IPC_TYPE_4] = "intel/sof- 101 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/ehl", 102 }, 102 }, 103 .default_lib_path = { 103 .default_lib_path = { 104 [SOF_IPC_TYPE_4] = "intel/sof- 104 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/ehl", 105 }, 105 }, 106 .default_tplg_path = { 106 .default_tplg_path = { 107 [SOF_IPC_TYPE_3] = "intel/sof- 107 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 108 [SOF_IPC_TYPE_4] = "intel/sof- 108 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 109 }, 109 }, 110 .default_fw_filename = { 110 .default_fw_filename = { 111 [SOF_IPC_TYPE_3] = "sof-ehl.ri 111 [SOF_IPC_TYPE_3] = "sof-ehl.ri", 112 [SOF_IPC_TYPE_4] = "sof-ehl.ri 112 [SOF_IPC_TYPE_4] = "sof-ehl.ri", 113 }, 113 }, 114 .nocodec_tplg_filename = "sof-ehl-noco 114 .nocodec_tplg_filename = "sof-ehl-nocodec.tplg", 115 .ops = &sof_tgl_ops, 115 .ops = &sof_tgl_ops, 116 .ops_init = sof_tgl_ops_init, 116 .ops_init = sof_tgl_ops_init, 117 .ops_free = hda_ops_free, 117 .ops_free = hda_ops_free, 118 }; 118 }; 119 119 120 static const struct sof_dev_desc adls_desc = { 120 static const struct sof_dev_desc adls_desc = { 121 .machines = snd_soc_acpi 121 .machines = snd_soc_acpi_intel_adl_machines, 122 .alt_machines = snd_soc_acpi 122 .alt_machines = snd_soc_acpi_intel_adl_sdw_machines, 123 .use_acpi_target_states = true, 123 .use_acpi_target_states = true, 124 .resindex_lpe_base = 0, 124 .resindex_lpe_base = 0, 125 .resindex_pcicfg_base = -1, 125 .resindex_pcicfg_base = -1, 126 .resindex_imr_base = -1, 126 .resindex_imr_base = -1, 127 .irqindex_host_ipc = -1, 127 .irqindex_host_ipc = -1, 128 .chip_info = &adls_chip_info, 128 .chip_info = &adls_chip_info, 129 .ipc_supported_mask = BIT(SOF_IPC_ 129 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 130 .ipc_default = SOF_IPC_TYPE 130 .ipc_default = SOF_IPC_TYPE_3, 131 .dspless_mode_supported = true, 131 .dspless_mode_supported = true, /* Only supported for HDaudio */ 132 .default_fw_path = { 132 .default_fw_path = { 133 [SOF_IPC_TYPE_3] = "intel/sof" 133 [SOF_IPC_TYPE_3] = "intel/sof", 134 [SOF_IPC_TYPE_4] = "intel/sof- 134 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl-s", 135 }, 135 }, 136 .default_lib_path = { 136 .default_lib_path = { 137 [SOF_IPC_TYPE_4] = "intel/sof- 137 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl-s", 138 }, 138 }, 139 .default_tplg_path = { 139 .default_tplg_path = { 140 [SOF_IPC_TYPE_3] = "intel/sof- 140 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 141 [SOF_IPC_TYPE_4] = "intel/sof- 141 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 142 }, 142 }, 143 .default_fw_filename = { 143 .default_fw_filename = { 144 [SOF_IPC_TYPE_3] = "sof-adl-s. 144 [SOF_IPC_TYPE_3] = "sof-adl-s.ri", 145 [SOF_IPC_TYPE_4] = "sof-adl-s. 145 [SOF_IPC_TYPE_4] = "sof-adl-s.ri", 146 }, 146 }, 147 .nocodec_tplg_filename = "sof-adl-noco 147 .nocodec_tplg_filename = "sof-adl-nocodec.tplg", 148 .ops = &sof_tgl_ops, 148 .ops = &sof_tgl_ops, 149 .ops_init = sof_tgl_ops_init, 149 .ops_init = sof_tgl_ops_init, 150 .ops_free = hda_ops_free, 150 .ops_free = hda_ops_free, 151 }; 151 }; 152 152 153 static const struct sof_dev_desc adl_desc = { 153 static const struct sof_dev_desc adl_desc = { 154 .machines = snd_soc_acpi 154 .machines = snd_soc_acpi_intel_adl_machines, 155 .alt_machines = snd_soc_acpi 155 .alt_machines = snd_soc_acpi_intel_adl_sdw_machines, 156 .use_acpi_target_states = true, 156 .use_acpi_target_states = true, 157 .resindex_lpe_base = 0, 157 .resindex_lpe_base = 0, 158 .resindex_pcicfg_base = -1, 158 .resindex_pcicfg_base = -1, 159 .resindex_imr_base = -1, 159 .resindex_imr_base = -1, 160 .irqindex_host_ipc = -1, 160 .irqindex_host_ipc = -1, 161 .chip_info = &tgl_chip_info, 161 .chip_info = &tgl_chip_info, 162 .ipc_supported_mask = BIT(SOF_IPC_ 162 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 163 .ipc_default = SOF_IPC_TYPE 163 .ipc_default = SOF_IPC_TYPE_3, 164 .dspless_mode_supported = true, 164 .dspless_mode_supported = true, /* Only supported for HDaudio */ 165 .default_fw_path = { 165 .default_fw_path = { 166 [SOF_IPC_TYPE_3] = "intel/sof" 166 [SOF_IPC_TYPE_3] = "intel/sof", 167 [SOF_IPC_TYPE_4] = "intel/sof- 167 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl", 168 }, 168 }, 169 .default_lib_path = { 169 .default_lib_path = { 170 [SOF_IPC_TYPE_4] = "intel/sof- 170 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl", 171 }, 171 }, 172 .default_tplg_path = { 172 .default_tplg_path = { 173 [SOF_IPC_TYPE_3] = "intel/sof- 173 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 174 [SOF_IPC_TYPE_4] = "intel/sof- 174 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 175 }, 175 }, 176 .default_fw_filename = { 176 .default_fw_filename = { 177 [SOF_IPC_TYPE_3] = "sof-adl.ri 177 [SOF_IPC_TYPE_3] = "sof-adl.ri", 178 [SOF_IPC_TYPE_4] = "sof-adl.ri 178 [SOF_IPC_TYPE_4] = "sof-adl.ri", 179 }, 179 }, 180 .nocodec_tplg_filename = "sof-adl-noco 180 .nocodec_tplg_filename = "sof-adl-nocodec.tplg", 181 .ops = &sof_tgl_ops, 181 .ops = &sof_tgl_ops, 182 .ops_init = sof_tgl_ops_init, 182 .ops_init = sof_tgl_ops_init, 183 .ops_free = hda_ops_free, 183 .ops_free = hda_ops_free, 184 }; 184 }; 185 185 186 static const struct sof_dev_desc adln_desc = { 186 static const struct sof_dev_desc adln_desc = { 187 .machines = snd_soc_acpi 187 .machines = snd_soc_acpi_intel_adl_machines, 188 .alt_machines = snd_soc_acpi 188 .alt_machines = snd_soc_acpi_intel_adl_sdw_machines, 189 .use_acpi_target_states = true, 189 .use_acpi_target_states = true, 190 .resindex_lpe_base = 0, 190 .resindex_lpe_base = 0, 191 .resindex_pcicfg_base = -1, 191 .resindex_pcicfg_base = -1, 192 .resindex_imr_base = -1, 192 .resindex_imr_base = -1, 193 .irqindex_host_ipc = -1, 193 .irqindex_host_ipc = -1, 194 .chip_info = &tgl_chip_info, 194 .chip_info = &tgl_chip_info, 195 .ipc_supported_mask = BIT(SOF_IPC_ 195 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 196 .ipc_default = SOF_IPC_TYPE 196 .ipc_default = SOF_IPC_TYPE_3, 197 .dspless_mode_supported = true, 197 .dspless_mode_supported = true, /* Only supported for HDaudio */ 198 .default_fw_path = { 198 .default_fw_path = { 199 [SOF_IPC_TYPE_3] = "intel/sof" 199 [SOF_IPC_TYPE_3] = "intel/sof", 200 [SOF_IPC_TYPE_4] = "intel/sof- 200 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/adl-n", 201 }, 201 }, 202 .default_lib_path = { 202 .default_lib_path = { 203 [SOF_IPC_TYPE_4] = "intel/sof- 203 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/adl-n", 204 }, 204 }, 205 .default_tplg_path = { 205 .default_tplg_path = { 206 [SOF_IPC_TYPE_3] = "intel/sof- 206 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 207 [SOF_IPC_TYPE_4] = "intel/sof- 207 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 208 }, 208 }, 209 .default_fw_filename = { 209 .default_fw_filename = { 210 [SOF_IPC_TYPE_3] = "sof-adl-n. 210 [SOF_IPC_TYPE_3] = "sof-adl-n.ri", 211 [SOF_IPC_TYPE_4] = "sof-adl-n. 211 [SOF_IPC_TYPE_4] = "sof-adl-n.ri", 212 }, 212 }, 213 .nocodec_tplg_filename = "sof-adl-noco 213 .nocodec_tplg_filename = "sof-adl-nocodec.tplg", 214 .ops = &sof_tgl_ops, 214 .ops = &sof_tgl_ops, 215 .ops_init = sof_tgl_ops_init, 215 .ops_init = sof_tgl_ops_init, 216 .ops_free = hda_ops_free, 216 .ops_free = hda_ops_free, 217 }; 217 }; 218 218 219 static const struct sof_dev_desc rpls_desc = { 219 static const struct sof_dev_desc rpls_desc = { 220 .machines = snd_soc_acpi 220 .machines = snd_soc_acpi_intel_rpl_machines, 221 .alt_machines = snd_soc_acpi 221 .alt_machines = snd_soc_acpi_intel_rpl_sdw_machines, 222 .use_acpi_target_states = true, 222 .use_acpi_target_states = true, 223 .resindex_lpe_base = 0, 223 .resindex_lpe_base = 0, 224 .resindex_pcicfg_base = -1, 224 .resindex_pcicfg_base = -1, 225 .resindex_imr_base = -1, 225 .resindex_imr_base = -1, 226 .irqindex_host_ipc = -1, 226 .irqindex_host_ipc = -1, 227 .chip_info = &adls_chip_info, 227 .chip_info = &adls_chip_info, 228 .ipc_supported_mask = BIT(SOF_IPC_ 228 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 229 .ipc_default = SOF_IPC_TYPE 229 .ipc_default = SOF_IPC_TYPE_3, 230 .dspless_mode_supported = true, 230 .dspless_mode_supported = true, /* Only supported for HDaudio */ 231 .default_fw_path = { 231 .default_fw_path = { 232 [SOF_IPC_TYPE_3] = "intel/sof" 232 [SOF_IPC_TYPE_3] = "intel/sof", 233 [SOF_IPC_TYPE_4] = "intel/sof- 233 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/rpl-s", 234 }, 234 }, 235 .default_lib_path = { 235 .default_lib_path = { 236 [SOF_IPC_TYPE_4] = "intel/sof- 236 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/rpl-s", 237 }, 237 }, 238 .default_tplg_path = { 238 .default_tplg_path = { 239 [SOF_IPC_TYPE_3] = "intel/sof- 239 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 240 [SOF_IPC_TYPE_4] = "intel/sof- 240 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 241 }, 241 }, 242 .default_fw_filename = { 242 .default_fw_filename = { 243 [SOF_IPC_TYPE_3] = "sof-rpl-s. 243 [SOF_IPC_TYPE_3] = "sof-rpl-s.ri", 244 [SOF_IPC_TYPE_4] = "sof-rpl-s. 244 [SOF_IPC_TYPE_4] = "sof-rpl-s.ri", 245 }, 245 }, 246 .nocodec_tplg_filename = "sof-rpl-noco 246 .nocodec_tplg_filename = "sof-rpl-nocodec.tplg", 247 .ops = &sof_tgl_ops, 247 .ops = &sof_tgl_ops, 248 .ops_init = sof_tgl_ops_init, 248 .ops_init = sof_tgl_ops_init, 249 .ops_free = hda_ops_free, 249 .ops_free = hda_ops_free, 250 }; 250 }; 251 251 252 static const struct sof_dev_desc rpl_desc = { 252 static const struct sof_dev_desc rpl_desc = { 253 .machines = snd_soc_acpi 253 .machines = snd_soc_acpi_intel_rpl_machines, 254 .alt_machines = snd_soc_acpi 254 .alt_machines = snd_soc_acpi_intel_rpl_sdw_machines, 255 .use_acpi_target_states = true, 255 .use_acpi_target_states = true, 256 .resindex_lpe_base = 0, 256 .resindex_lpe_base = 0, 257 .resindex_pcicfg_base = -1, 257 .resindex_pcicfg_base = -1, 258 .resindex_imr_base = -1, 258 .resindex_imr_base = -1, 259 .irqindex_host_ipc = -1, 259 .irqindex_host_ipc = -1, 260 .chip_info = &tgl_chip_info, 260 .chip_info = &tgl_chip_info, 261 .ipc_supported_mask = BIT(SOF_IPC_ 261 .ipc_supported_mask = BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4), 262 .ipc_default = SOF_IPC_TYPE 262 .ipc_default = SOF_IPC_TYPE_3, 263 .dspless_mode_supported = true, 263 .dspless_mode_supported = true, /* Only supported for HDaudio */ 264 .default_fw_path = { 264 .default_fw_path = { 265 [SOF_IPC_TYPE_3] = "intel/sof" 265 [SOF_IPC_TYPE_3] = "intel/sof", 266 [SOF_IPC_TYPE_4] = "intel/sof- 266 [SOF_IPC_TYPE_4] = "intel/sof-ipc4/rpl", 267 }, 267 }, 268 .default_lib_path = { 268 .default_lib_path = { 269 [SOF_IPC_TYPE_4] = "intel/sof- 269 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/rpl", 270 }, 270 }, 271 .default_tplg_path = { 271 .default_tplg_path = { 272 [SOF_IPC_TYPE_3] = "intel/sof- 272 [SOF_IPC_TYPE_3] = "intel/sof-tplg", 273 [SOF_IPC_TYPE_4] = "intel/sof- 273 [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 274 }, 274 }, 275 .default_fw_filename = { 275 .default_fw_filename = { 276 [SOF_IPC_TYPE_3] = "sof-rpl.ri 276 [SOF_IPC_TYPE_3] = "sof-rpl.ri", 277 [SOF_IPC_TYPE_4] = "sof-rpl.ri 277 [SOF_IPC_TYPE_4] = "sof-rpl.ri", 278 }, 278 }, 279 .nocodec_tplg_filename = "sof-rpl-noco 279 .nocodec_tplg_filename = "sof-rpl-nocodec.tplg", 280 .ops = &sof_tgl_ops, 280 .ops = &sof_tgl_ops, 281 .ops_init = sof_tgl_ops_init, 281 .ops_init = sof_tgl_ops_init, 282 .ops_free = hda_ops_free, 282 .ops_free = hda_ops_free, 283 }; 283 }; 284 284 285 /* PCI IDs */ 285 /* PCI IDs */ 286 static const struct pci_device_id sof_pci_ids[ 286 static const struct pci_device_id sof_pci_ids[] = { 287 { PCI_DEVICE_DATA(INTEL, HDA_TGL_LP, & 287 { PCI_DEVICE_DATA(INTEL, HDA_TGL_LP, &tgl_desc) }, 288 { PCI_DEVICE_DATA(INTEL, HDA_TGL_H, &t 288 { PCI_DEVICE_DATA(INTEL, HDA_TGL_H, &tglh_desc) }, 289 { PCI_DEVICE_DATA(INTEL, HDA_EHL_0, &e 289 { PCI_DEVICE_DATA(INTEL, HDA_EHL_0, &ehl_desc) }, 290 { PCI_DEVICE_DATA(INTEL, HDA_EHL_3, &e 290 { PCI_DEVICE_DATA(INTEL, HDA_EHL_3, &ehl_desc) }, 291 { PCI_DEVICE_DATA(INTEL, HDA_ADL_S, &a 291 { PCI_DEVICE_DATA(INTEL, HDA_ADL_S, &adls_desc) }, 292 { PCI_DEVICE_DATA(INTEL, HDA_RPL_S, &r 292 { PCI_DEVICE_DATA(INTEL, HDA_RPL_S, &rpls_desc) }, 293 { PCI_DEVICE_DATA(INTEL, HDA_ADL_P, &a 293 { PCI_DEVICE_DATA(INTEL, HDA_ADL_P, &adl_desc) }, 294 { PCI_DEVICE_DATA(INTEL, HDA_ADL_PS, & 294 { PCI_DEVICE_DATA(INTEL, HDA_ADL_PS, &adl_desc) }, 295 { PCI_DEVICE_DATA(INTEL, HDA_RPL_P_0, 295 { PCI_DEVICE_DATA(INTEL, HDA_RPL_P_0, &rpl_desc) }, 296 { PCI_DEVICE_DATA(INTEL, HDA_RPL_P_1, 296 { PCI_DEVICE_DATA(INTEL, HDA_RPL_P_1, &rpl_desc) }, 297 { PCI_DEVICE_DATA(INTEL, HDA_ADL_M, &a 297 { PCI_DEVICE_DATA(INTEL, HDA_ADL_M, &adl_desc) }, 298 { PCI_DEVICE_DATA(INTEL, HDA_ADL_PX, & 298 { PCI_DEVICE_DATA(INTEL, HDA_ADL_PX, &adl_desc) }, 299 { PCI_DEVICE_DATA(INTEL, HDA_RPL_M, &r 299 { PCI_DEVICE_DATA(INTEL, HDA_RPL_M, &rpl_desc) }, 300 { PCI_DEVICE_DATA(INTEL, HDA_RPL_PX, & 300 { PCI_DEVICE_DATA(INTEL, HDA_RPL_PX, &rpl_desc) }, 301 { PCI_DEVICE_DATA(INTEL, HDA_ADL_N, &a 301 { PCI_DEVICE_DATA(INTEL, HDA_ADL_N, &adln_desc) }, 302 { 0, } 302 { 0, } 303 }; 303 }; 304 MODULE_DEVICE_TABLE(pci, sof_pci_ids); 304 MODULE_DEVICE_TABLE(pci, sof_pci_ids); 305 305 306 /* pci_driver definition */ 306 /* pci_driver definition */ 307 static struct pci_driver snd_sof_pci_intel_tgl 307 static struct pci_driver snd_sof_pci_intel_tgl_driver = { 308 .name = "sof-audio-pci-intel-tgl", 308 .name = "sof-audio-pci-intel-tgl", 309 .id_table = sof_pci_ids, 309 .id_table = sof_pci_ids, 310 .probe = hda_pci_intel_probe, 310 .probe = hda_pci_intel_probe, 311 .remove = sof_pci_remove, 311 .remove = sof_pci_remove, 312 .shutdown = sof_pci_shutdown, 312 .shutdown = sof_pci_shutdown, 313 .driver = { 313 .driver = { 314 .pm = &sof_pci_pm, 314 .pm = &sof_pci_pm, 315 }, 315 }, 316 }; 316 }; 317 module_pci_driver(snd_sof_pci_intel_tgl_driver 317 module_pci_driver(snd_sof_pci_intel_tgl_driver); 318 318 319 MODULE_LICENSE("Dual BSD/GPL"); 319 MODULE_LICENSE("Dual BSD/GPL"); 320 MODULE_DESCRIPTION("SOF support for TigerLake 320 MODULE_DESCRIPTION("SOF support for TigerLake platforms"); 321 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_GENERIC 321 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_GENERIC); 322 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON) 322 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON); 323 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_CNL); 323 MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_CNL); 324 MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV); 324 MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV); 325 325
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.