18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * soc-acpi-intel-bxt-match.c - tables and support for BXT ACPI enumeration.
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (c) 2018, Intel Corporation.
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#include <linux/dmi.h>
108c2ecf20Sopenharmony_ci#include <sound/soc-acpi.h>
118c2ecf20Sopenharmony_ci#include <sound/soc-acpi-intel-match.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cienum {
148c2ecf20Sopenharmony_ci	APL_RVP,
158c2ecf20Sopenharmony_ci};
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistatic const struct dmi_system_id apl_table[] = {
188c2ecf20Sopenharmony_ci	{
198c2ecf20Sopenharmony_ci		.matches = {
208c2ecf20Sopenharmony_ci			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
218c2ecf20Sopenharmony_ci			DMI_MATCH(DMI_BOARD_NAME, "Apollolake RVP1A"),
228c2ecf20Sopenharmony_ci		},
238c2ecf20Sopenharmony_ci		.driver_data = (void *)(APL_RVP),
248c2ecf20Sopenharmony_ci	},
258c2ecf20Sopenharmony_ci	{}
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_cistatic struct snd_soc_acpi_mach *apl_quirk(void *arg)
298c2ecf20Sopenharmony_ci{
308c2ecf20Sopenharmony_ci	struct snd_soc_acpi_mach *mach = arg;
318c2ecf20Sopenharmony_ci	const struct dmi_system_id *dmi_id;
328c2ecf20Sopenharmony_ci	unsigned long apl_machine_id;
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	dmi_id = dmi_first_match(apl_table);
358c2ecf20Sopenharmony_ci	if (dmi_id) {
368c2ecf20Sopenharmony_ci		apl_machine_id = (unsigned long)dmi_id->driver_data;
378c2ecf20Sopenharmony_ci		if (apl_machine_id == APL_RVP)
388c2ecf20Sopenharmony_ci			return NULL;
398c2ecf20Sopenharmony_ci	}
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci	return mach;
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cistatic struct snd_soc_acpi_codecs bxt_codecs = {
458c2ecf20Sopenharmony_ci	.num_codecs = 1,
468c2ecf20Sopenharmony_ci	.codecs = {"MX98357A"}
478c2ecf20Sopenharmony_ci};
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cistruct snd_soc_acpi_mach snd_soc_acpi_intel_bxt_machines[] = {
508c2ecf20Sopenharmony_ci	{
518c2ecf20Sopenharmony_ci		.id = "INT343A",
528c2ecf20Sopenharmony_ci		.drv_name = "bxt_alc298s_i2s",
538c2ecf20Sopenharmony_ci		.fw_filename = "intel/dsp_fw_bxtn.bin",
548c2ecf20Sopenharmony_ci		.sof_fw_filename = "sof-apl.ri",
558c2ecf20Sopenharmony_ci		.sof_tplg_filename = "sof-apl-rt298.tplg",
568c2ecf20Sopenharmony_ci	},
578c2ecf20Sopenharmony_ci	{
588c2ecf20Sopenharmony_ci		.id = "DLGS7219",
598c2ecf20Sopenharmony_ci		.drv_name = "bxt_da7219_max98357a",
608c2ecf20Sopenharmony_ci		.fw_filename = "intel/dsp_fw_bxtn.bin",
618c2ecf20Sopenharmony_ci		.machine_quirk = snd_soc_acpi_codec_list,
628c2ecf20Sopenharmony_ci		.quirk_data = &bxt_codecs,
638c2ecf20Sopenharmony_ci		.sof_fw_filename = "sof-apl.ri",
648c2ecf20Sopenharmony_ci		.sof_tplg_filename = "sof-apl-da7219.tplg",
658c2ecf20Sopenharmony_ci	},
668c2ecf20Sopenharmony_ci	{
678c2ecf20Sopenharmony_ci		.id = "104C5122",
688c2ecf20Sopenharmony_ci		.drv_name = "sof_pcm512x",
698c2ecf20Sopenharmony_ci		.sof_fw_filename = "sof-apl.ri",
708c2ecf20Sopenharmony_ci		.sof_tplg_filename = "sof-apl-pcm512x.tplg",
718c2ecf20Sopenharmony_ci	},
728c2ecf20Sopenharmony_ci	{
738c2ecf20Sopenharmony_ci		.id = "1AEC8804",
748c2ecf20Sopenharmony_ci		.drv_name = "sof-wm8804",
758c2ecf20Sopenharmony_ci		.sof_fw_filename = "sof-apl.ri",
768c2ecf20Sopenharmony_ci		.sof_tplg_filename = "sof-apl-wm8804.tplg",
778c2ecf20Sopenharmony_ci	},
788c2ecf20Sopenharmony_ci	{
798c2ecf20Sopenharmony_ci		.id = "INT34C3",
808c2ecf20Sopenharmony_ci		.drv_name = "bxt_tdf8532",
818c2ecf20Sopenharmony_ci		.machine_quirk = apl_quirk,
828c2ecf20Sopenharmony_ci		.sof_fw_filename = "sof-apl.ri",
838c2ecf20Sopenharmony_ci		.sof_tplg_filename = "sof-apl-tdf8532.tplg",
848c2ecf20Sopenharmony_ci	},
858c2ecf20Sopenharmony_ci	{},
868c2ecf20Sopenharmony_ci};
878c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(snd_soc_acpi_intel_bxt_machines);
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2");
908c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Intel Common ACPI Match module");
91