1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * soc-acpi-intel-bxt-match.c - tables and support for BXT ACPI enumeration. |
4 | * |
5 | * Copyright (c) 2018, Intel Corporation. |
6 | * |
7 | */ |
8 | |
9 | #include <linux/dmi.h> |
10 | #include <sound/soc-acpi.h> |
11 | #include <sound/soc-acpi-intel-match.h> |
12 | |
13 | enum { |
14 | APL_RVP, |
15 | }; |
16 | |
17 | static const struct dmi_system_id apl_table[] = { |
18 | { |
19 | .matches = { |
20 | DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp." ), |
21 | DMI_MATCH(DMI_BOARD_NAME, "Apollolake RVP1A" ), |
22 | }, |
23 | .driver_data = (void *)(APL_RVP), |
24 | }, |
25 | {} |
26 | }; |
27 | |
28 | static struct snd_soc_acpi_mach *apl_quirk(void *arg) |
29 | { |
30 | struct snd_soc_acpi_mach *mach = arg; |
31 | const struct dmi_system_id *dmi_id; |
32 | unsigned long apl_machine_id; |
33 | |
34 | dmi_id = dmi_first_match(list: apl_table); |
35 | if (dmi_id) { |
36 | apl_machine_id = (unsigned long)dmi_id->driver_data; |
37 | if (apl_machine_id == APL_RVP) |
38 | return NULL; |
39 | } |
40 | |
41 | return mach; |
42 | } |
43 | |
44 | static const struct snd_soc_acpi_codecs essx_83x6 = { |
45 | .num_codecs = 3, |
46 | .codecs = { "ESSX8316" , "ESSX8326" , "ESSX8336" }, |
47 | }; |
48 | |
49 | static const struct snd_soc_acpi_codecs bxt_codecs = { |
50 | .num_codecs = 1, |
51 | .codecs = {"MX98357A" } |
52 | }; |
53 | |
54 | struct snd_soc_acpi_mach snd_soc_acpi_intel_bxt_machines[] = { |
55 | { |
56 | .id = "INT343A" , |
57 | .drv_name = "bxt_alc298s_i2s" , |
58 | .fw_filename = "intel/dsp_fw_bxtn.bin" , |
59 | .sof_tplg_filename = "sof-apl-rt298.tplg" , |
60 | }, |
61 | { |
62 | .id = "DLGS7219" , |
63 | .drv_name = "bxt_da7219_mx98357a" , |
64 | .fw_filename = "intel/dsp_fw_bxtn.bin" , |
65 | .machine_quirk = snd_soc_acpi_codec_list, |
66 | .quirk_data = &bxt_codecs, |
67 | .sof_tplg_filename = "sof-apl-da7219.tplg" , |
68 | }, |
69 | { |
70 | .id = "104C5122" , |
71 | .drv_name = "sof_pcm512x" , |
72 | .sof_tplg_filename = "sof-apl-pcm512x.tplg" , |
73 | }, |
74 | { |
75 | .id = "1AEC8804" , |
76 | .drv_name = "sof-wm8804" , |
77 | .sof_tplg_filename = "sof-apl-wm8804.tplg" , |
78 | }, |
79 | { |
80 | .id = "INT34C3" , |
81 | .drv_name = "bxt_tdf8532" , |
82 | .machine_quirk = apl_quirk, |
83 | .sof_tplg_filename = "sof-apl-tdf8532.tplg" , |
84 | }, |
85 | { |
86 | .comp_ids = &essx_83x6, |
87 | .drv_name = "sof-essx8336" , |
88 | .sof_tplg_filename = "sof-apl-es8336" , /* the tplg suffix is added at run time */ |
89 | .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | |
90 | SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | |
91 | SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, |
92 | }, |
93 | {}, |
94 | }; |
95 | EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_bxt_machines); |
96 | |