a6264056b3
We've been using a default firmware name for each PCI/ACPI/OF platform for a while. The machine-specific sof_fw_filename is in practice not different from the default, and newer devices don't set this field, so let's remove the redundant definitions. When OEMs modify the base firmware, they can keep the same firmware name but store the file in a separate directory. Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20220301194903.60859-2-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
168 lines
4.0 KiB
C
168 lines
4.0 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* soc-acpi-intel-cht-match.c - tables and support for CHT ACPI enumeration.
|
|
*
|
|
* Copyright (c) 2017, Intel Corporation.
|
|
*/
|
|
|
|
#include <linux/dmi.h>
|
|
#include <sound/soc-acpi.h>
|
|
#include <sound/soc-acpi-intel-match.h>
|
|
|
|
static unsigned long cht_machine_id;
|
|
|
|
#define CHT_SURFACE_MACH 1
|
|
|
|
static int cht_surface_quirk_cb(const struct dmi_system_id *id)
|
|
{
|
|
cht_machine_id = CHT_SURFACE_MACH;
|
|
return 1;
|
|
}
|
|
|
|
static const struct dmi_system_id cht_table[] = {
|
|
{
|
|
.callback = cht_surface_quirk_cb,
|
|
.matches = {
|
|
DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
|
|
DMI_MATCH(DMI_PRODUCT_NAME, "Surface 3"),
|
|
},
|
|
},
|
|
{ }
|
|
};
|
|
|
|
static struct snd_soc_acpi_mach cht_surface_mach = {
|
|
.id = "10EC5640",
|
|
.drv_name = "cht-bsw-rt5645",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "cht-bsw",
|
|
.sof_tplg_filename = "sof-cht-rt5645.tplg",
|
|
};
|
|
|
|
static struct snd_soc_acpi_mach *cht_quirk(void *arg)
|
|
{
|
|
struct snd_soc_acpi_mach *mach = arg;
|
|
|
|
dmi_check_system(cht_table);
|
|
|
|
if (cht_machine_id == CHT_SURFACE_MACH)
|
|
return &cht_surface_mach;
|
|
else
|
|
return mach;
|
|
}
|
|
|
|
static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
|
|
.num_codecs = 2,
|
|
.codecs = { "10EC5640", "10EC3276" },
|
|
};
|
|
|
|
static const struct snd_soc_acpi_codecs rt5670_comp_ids = {
|
|
.num_codecs = 2,
|
|
.codecs = { "10EC5670", "10EC5672" },
|
|
};
|
|
|
|
static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
|
|
.num_codecs = 3,
|
|
.codecs = { "10EC5645", "10EC5650", "10EC3270" },
|
|
};
|
|
|
|
static const struct snd_soc_acpi_codecs da7213_comp_ids = {
|
|
.num_codecs = 2,
|
|
.codecs = { "DGLS7212", "DGLS7213"},
|
|
|
|
};
|
|
|
|
/* Cherryview-based platforms: CherryTrail and Braswell */
|
|
struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
|
{
|
|
.comp_ids = &rt5670_comp_ids,
|
|
.drv_name = "cht-bsw-rt5672",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "cht-bsw",
|
|
.sof_tplg_filename = "sof-cht-rt5670.tplg",
|
|
},
|
|
{
|
|
.comp_ids = &rt5645_comp_ids,
|
|
.drv_name = "cht-bsw-rt5645",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "cht-bsw",
|
|
.sof_tplg_filename = "sof-cht-rt5645.tplg",
|
|
},
|
|
{
|
|
.id = "193C9890",
|
|
.drv_name = "cht-bsw-max98090",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "cht-bsw",
|
|
.sof_tplg_filename = "sof-cht-max98090.tplg",
|
|
},
|
|
{
|
|
.id = "10508824",
|
|
.drv_name = "cht-bsw-nau8824",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "cht-bsw",
|
|
.sof_tplg_filename = "sof-cht-nau8824.tplg",
|
|
},
|
|
{
|
|
.comp_ids = &da7213_comp_ids,
|
|
.drv_name = "bytcht_da7213",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcht_da7213",
|
|
.sof_tplg_filename = "sof-cht-da7213.tplg",
|
|
},
|
|
{
|
|
.id = "ESSX8316",
|
|
.drv_name = "bytcht_es8316",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcht_es8316",
|
|
.sof_tplg_filename = "sof-cht-es8316.tplg",
|
|
},
|
|
/* some CHT-T platforms rely on RT5640, use Baytrail machine driver */
|
|
{
|
|
.comp_ids = &rt5640_comp_ids,
|
|
.drv_name = "bytcr_rt5640",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcr_rt5640",
|
|
.machine_quirk = cht_quirk,
|
|
.sof_tplg_filename = "sof-cht-rt5640.tplg",
|
|
},
|
|
{
|
|
.id = "10EC5682",
|
|
.drv_name = "sof_rt5682",
|
|
.sof_tplg_filename = "sof-cht-rt5682.tplg",
|
|
},
|
|
/* some CHT-T platforms rely on RT5651, use Baytrail machine driver */
|
|
{
|
|
.id = "10EC5651",
|
|
.drv_name = "bytcr_rt5651",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcr_rt5651",
|
|
.sof_tplg_filename = "sof-cht-rt5651.tplg",
|
|
},
|
|
{
|
|
.id = "14F10720",
|
|
.drv_name = "bytcht_cx2072x",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcht_cx2072x",
|
|
.sof_tplg_filename = "sof-cht-cx2072x.tplg",
|
|
},
|
|
{
|
|
.id = "104C5122",
|
|
.drv_name = "sof_pcm512x",
|
|
.sof_tplg_filename = "sof-cht-src-50khz-pcm512x.tplg",
|
|
},
|
|
|
|
#if IS_ENABLED(CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH)
|
|
/*
|
|
* This is always last in the table so that it is selected only when
|
|
* enabled explicitly and there is no codec-related information in SSDT
|
|
*/
|
|
{
|
|
.id = "808622A8",
|
|
.drv_name = "bytcht_nocodec",
|
|
.fw_filename = "intel/fw_sst_22a8.bin",
|
|
.board = "bytcht_nocodec",
|
|
},
|
|
#endif
|
|
{},
|
|
};
|
|
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_cherrytrail_machines);
|