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