96 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*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 13enum {14 APL_RVP,15};16 17static 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 28static 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(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 44static const struct snd_soc_acpi_codecs essx_83x6 = {45 .num_codecs = 3,46 .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},47};48 49static const struct snd_soc_acpi_codecs bxt_codecs = {50 .num_codecs = 1,51 .codecs = {"MX98357A"}52};53 54struct 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};95EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_bxt_machines);96