cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

soc-acpi-intel-byt-match.c (5406B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * soc-acpi-intel-byt-match.c - tables and support for BYT ACPI enumeration.
      4 *
      5 * Copyright (c) 2017, Intel Corporation.
      6 */
      7
      8#include <linux/dmi.h>
      9#include <sound/soc-acpi.h>
     10#include <sound/soc-acpi-intel-match.h>
     11
     12static unsigned long byt_machine_id;
     13
     14#define BYT_RT5672       1
     15#define BYT_POV_P1006W   2
     16
     17static int byt_rt5672_quirk_cb(const struct dmi_system_id *id)
     18{
     19	byt_machine_id = BYT_RT5672;
     20	return 1;
     21}
     22
     23static int byt_pov_p1006w_quirk_cb(const struct dmi_system_id *id)
     24{
     25	byt_machine_id = BYT_POV_P1006W;
     26	return 1;
     27}
     28
     29static const struct dmi_system_id byt_table[] = {
     30	{
     31		.callback = byt_rt5672_quirk_cb,
     32		.matches = {
     33			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
     34			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad 8"),
     35		},
     36	},
     37	{
     38		.callback = byt_rt5672_quirk_cb,
     39		.matches = {
     40			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
     41			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad 10"),
     42		},
     43	},
     44	{
     45		.callback = byt_rt5672_quirk_cb,
     46		.matches = {
     47			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
     48			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Tablet B"),
     49		},
     50	},
     51	{
     52		.callback = byt_rt5672_quirk_cb,
     53		.matches = {
     54			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
     55			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Miix 2 10"),
     56		},
     57	},
     58	{
     59		/* Point of View mobii wintab p1006w (v1.0) */
     60		.callback = byt_pov_p1006w_quirk_cb,
     61		.matches = {
     62			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
     63			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
     64			/* Note 105b is Foxcon's USB/PCI vendor id */
     65			DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"),
     66			DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
     67		},
     68	},
     69	{
     70		/* Aegex 10 tablet (RU2) */
     71		.callback = byt_rt5672_quirk_cb,
     72		.matches = {
     73			DMI_MATCH(DMI_SYS_VENDOR, "AEGEX"),
     74			DMI_MATCH(DMI_PRODUCT_VERSION, "RU2"),
     75		},
     76	},
     77	{
     78		/* Dell Venue 10 Pro 5055 */
     79		.callback = byt_rt5672_quirk_cb,
     80		.matches = {
     81			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
     82			DMI_MATCH(DMI_PRODUCT_NAME, "Venue 10 Pro 5055"),
     83		},
     84	},
     85	{ }
     86};
     87
     88/* Various devices use an ACPI id of 10EC5640 while using a rt5672 codec */
     89static struct snd_soc_acpi_mach byt_rt5672 = {
     90	.id = "10EC5640",
     91	.drv_name = "cht-bsw-rt5672",
     92	.fw_filename = "intel/fw_sst_0f28.bin",
     93	.board = "cht-bsw",
     94	.sof_tplg_filename = "sof-byt-rt5670.tplg",
     95};
     96
     97static struct snd_soc_acpi_mach byt_pov_p1006w = {
     98	.id = "10EC5640",
     99	.drv_name = "bytcr_rt5651",
    100	.fw_filename = "intel/fw_sst_0f28.bin",
    101	.board = "bytcr_rt5651",
    102	.sof_tplg_filename = "sof-byt-rt5651.tplg",
    103};
    104
    105static struct snd_soc_acpi_mach *byt_quirk(void *arg)
    106{
    107	struct snd_soc_acpi_mach *mach = arg;
    108
    109	dmi_check_system(byt_table);
    110
    111	switch (byt_machine_id) {
    112	case BYT_RT5672:
    113		return &byt_rt5672;
    114	case BYT_POV_P1006W:
    115		return &byt_pov_p1006w;
    116	default:
    117		return mach;
    118	}
    119}
    120
    121static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
    122	.num_codecs = 3,
    123	.codecs = { "10EC5640", "10EC5642", "INTCCFFD"},
    124};
    125
    126static const struct snd_soc_acpi_codecs wm5102_comp_ids = {
    127	.num_codecs = 2,
    128	.codecs = { "10WM5102", "WM510204", "WM510205"},
    129};
    130
    131static const struct snd_soc_acpi_codecs da7213_comp_ids = {
    132	.num_codecs = 2,
    133	.codecs = { "DGLS7212", "DGLS7213"},
    134};
    135
    136static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
    137	.num_codecs = 2,
    138	.codecs = { "10EC5645", "10EC5648"},
    139};
    140
    141struct snd_soc_acpi_mach  snd_soc_acpi_intel_baytrail_machines[] = {
    142	{
    143		.comp_ids = &rt5640_comp_ids,
    144		.drv_name = "bytcr_rt5640",
    145		.fw_filename = "intel/fw_sst_0f28.bin",
    146		.board = "bytcr_rt5640",
    147		.machine_quirk = byt_quirk,
    148		.sof_tplg_filename = "sof-byt-rt5640.tplg",
    149	},
    150	{
    151		.id = "10EC5651",
    152		.drv_name = "bytcr_rt5651",
    153		.fw_filename = "intel/fw_sst_0f28.bin",
    154		.board = "bytcr_rt5651",
    155		.sof_tplg_filename = "sof-byt-rt5651.tplg",
    156	},
    157	{
    158		.comp_ids = &wm5102_comp_ids,
    159		.drv_name = "bytcr_wm5102",
    160		.fw_filename = "intel/fw_sst_0f28.bin",
    161		.board = "bytcr_wm5102",
    162		.sof_tplg_filename = "sof-byt-wm5102.tplg",
    163	},
    164	{
    165		.comp_ids = &da7213_comp_ids,
    166		.drv_name = "bytcht_da7213",
    167		.fw_filename = "intel/fw_sst_0f28.bin",
    168		.board = "bytcht_da7213",
    169		.sof_tplg_filename = "sof-byt-da7213.tplg",
    170	},
    171	{
    172		.id = "ESSX8316",
    173		.drv_name = "bytcht_es8316",
    174		.fw_filename = "intel/fw_sst_0f28.bin",
    175		.board = "bytcht_es8316",
    176		.sof_tplg_filename = "sof-byt-es8316.tplg",
    177	},
    178	{
    179		.id = "10EC5682",
    180		.drv_name = "sof_rt5682",
    181		.sof_tplg_filename = "sof-byt-rt5682.tplg",
    182	},
    183	/* some Baytrail platforms rely on RT5645, use CHT machine driver */
    184	{
    185		.comp_ids = &rt5645_comp_ids,
    186		.drv_name = "cht-bsw-rt5645",
    187		.fw_filename = "intel/fw_sst_0f28.bin",
    188		.board = "cht-bsw",
    189		.sof_tplg_filename = "sof-byt-rt5645.tplg",
    190	},
    191	/* use CHT driver to Baytrail Chromebooks */
    192	{
    193		.id = "193C9890",
    194		.drv_name = "cht-bsw-max98090",
    195		.fw_filename = "intel/fw_sst_0f28.bin",
    196		.board = "cht-bsw",
    197		.sof_tplg_filename = "sof-byt-max98090.tplg",
    198	},
    199	{
    200		.id = "14F10720",
    201		.drv_name = "bytcht_cx2072x",
    202		.fw_filename = "intel/fw_sst_0f28.bin",
    203		.board = "bytcht_cx2072x",
    204		.sof_tplg_filename = "sof-byt-cx2072x.tplg",
    205	},
    206#if IS_ENABLED(CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH)
    207	/*
    208	 * This is always last in the table so that it is selected only when
    209	 * enabled explicitly and there is no codec-related information in SSDT
    210	 */
    211	{
    212		.id = "80860F28",
    213		.drv_name = "bytcht_nocodec",
    214		.fw_filename = "intel/fw_sst_0f28.bin",
    215		.board = "bytcht_nocodec",
    216	},
    217#endif
    218	{},
    219};
    220EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_baytrail_machines);