1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
3 // This file is provided under a dual BSD/GPLv2 license. When using or
4 // redistributing this file, you may do so under either license.
6 // Copyright(c) 2021 Advanced Micro Devices, Inc.
8 // Authors: Ajit Kumar Pandey <AjitKumar.Pandey@amd.com>
11 /* ACP machine configuration module */
13 #include <linux/acpi.h>
14 #include <linux/bits.h>
15 #include <linux/dmi.h>
16 #include <linux/module.h>
17 #include <linux/pci.h>
19 #include "../sof/amd/acp.h"
20 #include "mach-config.h"
22 static int acp_quirk_data;
24 static const struct config_entry config_table[] = {
26 .flags = FLAG_AMD_SOF,
27 .device = ACP_PCI_DEV_ID,
28 .dmi_table = (const struct dmi_system_id []) {
31 DMI_MATCH(DMI_SYS_VENDOR, "AMD"),
32 DMI_MATCH(DMI_PRODUCT_NAME, "Majolica-CZN"),
39 .flags = FLAG_AMD_SOF,
40 .device = ACP_PCI_DEV_ID,
41 .dmi_table = (const struct dmi_system_id []) {
44 DMI_MATCH(DMI_SYS_VENDOR, "Google"),
52 int snd_amd_acp_find_config(struct pci_dev *pci)
54 const struct config_entry *table = config_table;
55 u16 device = pci->device;
58 /* Do not enable FLAGS on older platforms with Rev id zero */
62 for (i = 0; i < ARRAY_SIZE(config_table); i++, table++) {
63 if (table->device != device)
65 if (table->dmi_table && !dmi_check_system(table->dmi_table))
67 acp_quirk_data = table->flags;
73 EXPORT_SYMBOL(snd_amd_acp_find_config);
75 static struct snd_soc_acpi_codecs amp_rt1019 = {
77 .codecs = {"10EC1019"}
80 static struct snd_soc_acpi_codecs amp_max = {
82 .codecs = {"MX98360A"}
85 struct snd_soc_acpi_mach snd_soc_acpi_amd_sof_machines[] = {
88 .drv_name = "rt5682-rt1019",
89 .pdata = (void *)&acp_quirk_data,
90 .machine_quirk = snd_soc_acpi_codec_list,
91 .quirk_data = &_rt1019,
92 .fw_filename = "sof-rn.ri",
93 .sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
97 .drv_name = "rt5682-max",
98 .pdata = (void *)&acp_quirk_data,
99 .machine_quirk = snd_soc_acpi_codec_list,
100 .quirk_data = &_max,
101 .fw_filename = "sof-rn.ri",
102 .sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
106 .drv_name = "rt5682s-max",
107 .pdata = (void *)&acp_quirk_data,
108 .machine_quirk = snd_soc_acpi_codec_list,
109 .quirk_data = &_max,
110 .fw_filename = "sof-rn.ri",
111 .sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
115 .drv_name = "rt5682s-rt1019",
116 .pdata = (void *)&acp_quirk_data,
117 .machine_quirk = snd_soc_acpi_codec_list,
118 .quirk_data = &_rt1019,
119 .fw_filename = "sof-rn.ri",
120 .sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
124 .drv_name = "renoir-dsp",
125 .pdata = (void *)&acp_quirk_data,
126 .fw_filename = "sof-rn.ri",
127 .sof_tplg_filename = "sof-acp.tplg",
131 EXPORT_SYMBOL(snd_soc_acpi_amd_sof_machines);
133 MODULE_LICENSE("Dual BSD/GPL");