1190688Sweongyo// SPDX-License-Identifier: GPL-2.0-only 2190688Sweongyo/* 3190688Sweongyo * soc-acpi-intel-bxt-match.c - tables and support for BXT ACPI enumeration. 4190688Sweongyo * 5190688Sweongyo * Copyright (c) 2018, Intel Corporation. 6190688Sweongyo * 7190688Sweongyo */ 8190688Sweongyo 9190688Sweongyo#include <linux/dmi.h> 10190688Sweongyo#include <sound/soc-acpi.h> 11190688Sweongyo#include <sound/soc-acpi-intel-match.h> 12190688Sweongyo 13190688Sweongyoenum { 14190688Sweongyo APL_RVP, 15190688Sweongyo}; 16190688Sweongyo 17190688Sweongyostatic const struct dmi_system_id apl_table[] = { 18190688Sweongyo { 19190688Sweongyo .matches = { 20190688Sweongyo DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."), 21190688Sweongyo DMI_MATCH(DMI_BOARD_NAME, "Apollolake RVP1A"), 22190688Sweongyo }, 23190688Sweongyo .driver_data = (void *)(APL_RVP), 24190688Sweongyo }, 25190688Sweongyo {} 26190688Sweongyo}; 27190688Sweongyo 28190688Sweongyostatic struct snd_soc_acpi_mach *apl_quirk(void *arg) 29190688Sweongyo{ 30190688Sweongyo struct snd_soc_acpi_mach *mach = arg; 31190688Sweongyo const struct dmi_system_id *dmi_id; 32190688Sweongyo unsigned long apl_machine_id; 33190688Sweongyo 34190688Sweongyo dmi_id = dmi_first_match(apl_table); 35190688Sweongyo if (dmi_id) { 36190688Sweongyo apl_machine_id = (unsigned long)dmi_id->driver_data; 37190688Sweongyo if (apl_machine_id == APL_RVP) 38190688Sweongyo return NULL; 39190688Sweongyo } 40190688Sweongyo 41190688Sweongyo return mach; 42190688Sweongyo} 43190688Sweongyo 44190688Sweongyostatic const struct snd_soc_acpi_codecs essx_83x6 = { 45190688Sweongyo .num_codecs = 3, 46190688Sweongyo .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"}, 47190688Sweongyo}; 48190688Sweongyo 49190688Sweongyostatic const struct snd_soc_acpi_codecs bxt_codecs = { 50190688Sweongyo .num_codecs = 1, 51190688Sweongyo .codecs = {"MX98357A"} 52190688Sweongyo}; 53190688Sweongyo 54190688Sweongyostruct snd_soc_acpi_mach snd_soc_acpi_intel_bxt_machines[] = { 55190688Sweongyo { 56190688Sweongyo .id = "INT343A", 57190688Sweongyo .drv_name = "bxt_alc298s_i2s", 58190688Sweongyo .fw_filename = "intel/dsp_fw_bxtn.bin", 59190688Sweongyo .sof_tplg_filename = "sof-apl-rt298.tplg", 60190688Sweongyo }, 61190688Sweongyo { 62190688Sweongyo .id = "DLGS7219", 63190688Sweongyo .drv_name = "bxt_da7219_mx98357a", 64190688Sweongyo .fw_filename = "intel/dsp_fw_bxtn.bin", 65190688Sweongyo .machine_quirk = snd_soc_acpi_codec_list, 66190688Sweongyo .quirk_data = &bxt_codecs, 67190688Sweongyo .sof_tplg_filename = "sof-apl-da7219.tplg", 68190688Sweongyo }, 69190688Sweongyo { 70190688Sweongyo .id = "104C5122", 71190688Sweongyo .drv_name = "sof_pcm512x", 72190688Sweongyo .sof_tplg_filename = "sof-apl-pcm512x.tplg", 73190688Sweongyo }, 74190688Sweongyo { 75190688Sweongyo .id = "1AEC8804", 76190688Sweongyo .drv_name = "sof-wm8804", 77190688Sweongyo .sof_tplg_filename = "sof-apl-wm8804.tplg", 78190688Sweongyo }, 79190688Sweongyo { 80190688Sweongyo .id = "INT34C3", 81190688Sweongyo .drv_name = "bxt_tdf8532", 82190688Sweongyo .machine_quirk = apl_quirk, 83190688Sweongyo .sof_tplg_filename = "sof-apl-tdf8532.tplg", 84190688Sweongyo }, 85190688Sweongyo { 86190688Sweongyo .comp_ids = &essx_83x6, 87190688Sweongyo .drv_name = "sof-essx8336", 88190688Sweongyo .sof_tplg_filename = "sof-apl-es8336", /* the tplg suffix is added at run time */ 89190688Sweongyo .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER | 90190688Sweongyo SND_SOC_ACPI_TPLG_INTEL_SSP_MSB | 91190688Sweongyo SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER, 92190688Sweongyo }, 93190688Sweongyo {}, 94190688Sweongyo}; 95190688SweongyoEXPORT_SYMBOL_GPL(snd_soc_acpi_intel_bxt_machines); 96190688Sweongyo