18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * soc-acpi-intel-cht-match.c - tables and support for CHT ACPI enumeration. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2017, Intel Corporation. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/dmi.h> 98c2ecf20Sopenharmony_ci#include <sound/soc-acpi.h> 108c2ecf20Sopenharmony_ci#include <sound/soc-acpi-intel-match.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistatic unsigned long cht_machine_id; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define CHT_SURFACE_MACH 1 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistatic int cht_surface_quirk_cb(const struct dmi_system_id *id) 178c2ecf20Sopenharmony_ci{ 188c2ecf20Sopenharmony_ci cht_machine_id = CHT_SURFACE_MACH; 198c2ecf20Sopenharmony_ci return 1; 208c2ecf20Sopenharmony_ci} 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistatic const struct dmi_system_id cht_table[] = { 238c2ecf20Sopenharmony_ci { 248c2ecf20Sopenharmony_ci .callback = cht_surface_quirk_cb, 258c2ecf20Sopenharmony_ci .matches = { 268c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), 278c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Surface 3"), 288c2ecf20Sopenharmony_ci }, 298c2ecf20Sopenharmony_ci }, 308c2ecf20Sopenharmony_ci { } 318c2ecf20Sopenharmony_ci}; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cistatic struct snd_soc_acpi_mach cht_surface_mach = { 348c2ecf20Sopenharmony_ci .id = "10EC5640", 358c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5645", 368c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 378c2ecf20Sopenharmony_ci .board = "cht-bsw", 388c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 398c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5645.tplg", 408c2ecf20Sopenharmony_ci}; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic struct snd_soc_acpi_mach *cht_quirk(void *arg) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci struct snd_soc_acpi_mach *mach = arg; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci dmi_check_system(cht_table); 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci if (cht_machine_id == CHT_SURFACE_MACH) 498c2ecf20Sopenharmony_ci return &cht_surface_mach; 508c2ecf20Sopenharmony_ci else 518c2ecf20Sopenharmony_ci return mach; 528c2ecf20Sopenharmony_ci} 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci/* Cherryview-based platforms: CherryTrail and Braswell */ 558c2ecf20Sopenharmony_cistruct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = { 568c2ecf20Sopenharmony_ci { 578c2ecf20Sopenharmony_ci .id = "10EC5670", 588c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5672", 598c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 608c2ecf20Sopenharmony_ci .board = "cht-bsw", 618c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 628c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5670.tplg", 638c2ecf20Sopenharmony_ci }, 648c2ecf20Sopenharmony_ci { 658c2ecf20Sopenharmony_ci .id = "10EC5672", 668c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5672", 678c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 688c2ecf20Sopenharmony_ci .board = "cht-bsw", 698c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 708c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5670.tplg", 718c2ecf20Sopenharmony_ci }, 728c2ecf20Sopenharmony_ci { 738c2ecf20Sopenharmony_ci .id = "10EC5645", 748c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5645", 758c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 768c2ecf20Sopenharmony_ci .board = "cht-bsw", 778c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 788c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5645.tplg", 798c2ecf20Sopenharmony_ci }, 808c2ecf20Sopenharmony_ci { 818c2ecf20Sopenharmony_ci .id = "10EC5650", 828c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5645", 838c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 848c2ecf20Sopenharmony_ci .board = "cht-bsw", 858c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 868c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5645.tplg", 878c2ecf20Sopenharmony_ci }, 888c2ecf20Sopenharmony_ci { 898c2ecf20Sopenharmony_ci .id = "10EC3270", 908c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-rt5645", 918c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 928c2ecf20Sopenharmony_ci .board = "cht-bsw", 938c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 948c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5645.tplg", 958c2ecf20Sopenharmony_ci }, 968c2ecf20Sopenharmony_ci { 978c2ecf20Sopenharmony_ci .id = "193C9890", 988c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-max98090", 998c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1008c2ecf20Sopenharmony_ci .board = "cht-bsw", 1018c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1028c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-max98090.tplg", 1038c2ecf20Sopenharmony_ci }, 1048c2ecf20Sopenharmony_ci { 1058c2ecf20Sopenharmony_ci .id = "10508824", 1068c2ecf20Sopenharmony_ci .drv_name = "cht-bsw-nau8824", 1078c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1088c2ecf20Sopenharmony_ci .board = "cht-bsw", 1098c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1108c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-nau8824.tplg", 1118c2ecf20Sopenharmony_ci }, 1128c2ecf20Sopenharmony_ci { 1138c2ecf20Sopenharmony_ci .id = "DLGS7212", 1148c2ecf20Sopenharmony_ci .drv_name = "bytcht_da7213", 1158c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1168c2ecf20Sopenharmony_ci .board = "bytcht_da7213", 1178c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1188c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-da7213.tplg", 1198c2ecf20Sopenharmony_ci }, 1208c2ecf20Sopenharmony_ci { 1218c2ecf20Sopenharmony_ci .id = "DLGS7213", 1228c2ecf20Sopenharmony_ci .drv_name = "bytcht_da7213", 1238c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1248c2ecf20Sopenharmony_ci .board = "bytcht_da7213", 1258c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1268c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-da7213.tplg", 1278c2ecf20Sopenharmony_ci }, 1288c2ecf20Sopenharmony_ci { 1298c2ecf20Sopenharmony_ci .id = "ESSX8316", 1308c2ecf20Sopenharmony_ci .drv_name = "bytcht_es8316", 1318c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1328c2ecf20Sopenharmony_ci .board = "bytcht_es8316", 1338c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1348c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-es8316.tplg", 1358c2ecf20Sopenharmony_ci }, 1368c2ecf20Sopenharmony_ci /* some CHT-T platforms rely on RT5640, use Baytrail machine driver */ 1378c2ecf20Sopenharmony_ci { 1388c2ecf20Sopenharmony_ci .id = "10EC5640", 1398c2ecf20Sopenharmony_ci .drv_name = "bytcr_rt5640", 1408c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1418c2ecf20Sopenharmony_ci .board = "bytcr_rt5640", 1428c2ecf20Sopenharmony_ci .machine_quirk = cht_quirk, 1438c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1448c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5640.tplg", 1458c2ecf20Sopenharmony_ci }, 1468c2ecf20Sopenharmony_ci { 1478c2ecf20Sopenharmony_ci .id = "10EC3276", 1488c2ecf20Sopenharmony_ci .drv_name = "bytcr_rt5640", 1498c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1508c2ecf20Sopenharmony_ci .board = "bytcr_rt5640", 1518c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1528c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5640.tplg", 1538c2ecf20Sopenharmony_ci }, 1548c2ecf20Sopenharmony_ci { 1558c2ecf20Sopenharmony_ci .id = "10EC5682", 1568c2ecf20Sopenharmony_ci .drv_name = "sof_rt5682", 1578c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1588c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5682.tplg", 1598c2ecf20Sopenharmony_ci }, 1608c2ecf20Sopenharmony_ci /* some CHT-T platforms rely on RT5651, use Baytrail machine driver */ 1618c2ecf20Sopenharmony_ci { 1628c2ecf20Sopenharmony_ci .id = "10EC5651", 1638c2ecf20Sopenharmony_ci .drv_name = "bytcr_rt5651", 1648c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1658c2ecf20Sopenharmony_ci .board = "bytcr_rt5651", 1668c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1678c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-rt5651.tplg", 1688c2ecf20Sopenharmony_ci }, 1698c2ecf20Sopenharmony_ci { 1708c2ecf20Sopenharmony_ci .id = "14F10720", 1718c2ecf20Sopenharmony_ci .drv_name = "bytcht_cx2072x", 1728c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1738c2ecf20Sopenharmony_ci .board = "bytcht_cx2072x", 1748c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1758c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-cx2072x.tplg", 1768c2ecf20Sopenharmony_ci }, 1778c2ecf20Sopenharmony_ci { 1788c2ecf20Sopenharmony_ci .id = "104C5122", 1798c2ecf20Sopenharmony_ci .drv_name = "sof_pcm512x", 1808c2ecf20Sopenharmony_ci .sof_fw_filename = "sof-cht.ri", 1818c2ecf20Sopenharmony_ci .sof_tplg_filename = "sof-cht-src-50khz-pcm512x.tplg", 1828c2ecf20Sopenharmony_ci }, 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH) 1858c2ecf20Sopenharmony_ci /* 1868c2ecf20Sopenharmony_ci * This is always last in the table so that it is selected only when 1878c2ecf20Sopenharmony_ci * enabled explicitly and there is no codec-related information in SSDT 1888c2ecf20Sopenharmony_ci */ 1898c2ecf20Sopenharmony_ci { 1908c2ecf20Sopenharmony_ci .id = "808622A8", 1918c2ecf20Sopenharmony_ci .drv_name = "bytcht_nocodec", 1928c2ecf20Sopenharmony_ci .fw_filename = "intel/fw_sst_22a8.bin", 1938c2ecf20Sopenharmony_ci .board = "bytcht_nocodec", 1948c2ecf20Sopenharmony_ci }, 1958c2ecf20Sopenharmony_ci#endif 1968c2ecf20Sopenharmony_ci {}, 1978c2ecf20Sopenharmony_ci}; 1988c2ecf20Sopenharmony_ciEXPORT_SYMBOL_GPL(snd_soc_acpi_intel_cherrytrail_machines); 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 2018c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Intel Common ACPI Match module"); 202