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

acp-config.c (3065B)


      1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
      2//
      3// This file is provided under a dual BSD/GPLv2 license. When using or
      4// redistributing this file, you may do so under either license.
      5//
      6// Copyright(c) 2021 Advanced Micro Devices, Inc.
      7//
      8// Authors: Ajit Kumar Pandey <AjitKumar.Pandey@amd.com>
      9//
     10
     11/* ACP machine configuration module */
     12
     13#include <linux/acpi.h>
     14#include <linux/bits.h>
     15#include <linux/dmi.h>
     16#include <linux/module.h>
     17#include <linux/pci.h>
     18
     19#include "../sof/amd/acp.h"
     20#include "mach-config.h"
     21
     22static int acp_quirk_data;
     23
     24static const struct config_entry config_table[] = {
     25	{
     26		.flags = FLAG_AMD_SOF,
     27		.device = ACP_PCI_DEV_ID,
     28		.dmi_table = (const struct dmi_system_id []) {
     29			{
     30				.matches = {
     31					DMI_MATCH(DMI_SYS_VENDOR, "AMD"),
     32					DMI_MATCH(DMI_PRODUCT_NAME, "Majolica-CZN"),
     33				},
     34			},
     35			{}
     36		},
     37	},
     38	{
     39		.flags = FLAG_AMD_SOF,
     40		.device = ACP_PCI_DEV_ID,
     41		.dmi_table = (const struct dmi_system_id []) {
     42			{
     43				.matches = {
     44					DMI_MATCH(DMI_SYS_VENDOR, "Google"),
     45				},
     46			},
     47			{}
     48		},
     49	},
     50};
     51
     52int snd_amd_acp_find_config(struct pci_dev *pci)
     53{
     54	const struct config_entry *table = config_table;
     55	u16 device = pci->device;
     56	int i;
     57
     58	/* Do not enable FLAGS on older platforms with Rev id zero */
     59	if (!pci->revision)
     60		return 0;
     61
     62	for (i = 0; i < ARRAY_SIZE(config_table); i++, table++) {
     63		if (table->device != device)
     64			continue;
     65		if (table->dmi_table && !dmi_check_system(table->dmi_table))
     66			continue;
     67		acp_quirk_data = table->flags;
     68		return table->flags;
     69	}
     70
     71	return 0;
     72}
     73EXPORT_SYMBOL(snd_amd_acp_find_config);
     74
     75static struct snd_soc_acpi_codecs amp_rt1019 = {
     76	.num_codecs = 1,
     77	.codecs = {"10EC1019"}
     78};
     79
     80static struct snd_soc_acpi_codecs amp_max = {
     81	.num_codecs = 1,
     82	.codecs = {"MX98360A"}
     83};
     84
     85struct snd_soc_acpi_mach snd_soc_acpi_amd_sof_machines[] = {
     86	{
     87		.id = "10EC5682",
     88		.drv_name = "rt5682-rt1019",
     89		.pdata = (void *)&acp_quirk_data,
     90		.machine_quirk = snd_soc_acpi_codec_list,
     91		.quirk_data = &amp_rt1019,
     92		.fw_filename = "sof-rn.ri",
     93		.sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
     94	},
     95	{
     96		.id = "10EC5682",
     97		.drv_name = "rt5682-max",
     98		.pdata = (void *)&acp_quirk_data,
     99		.machine_quirk = snd_soc_acpi_codec_list,
    100		.quirk_data = &amp_max,
    101		.fw_filename = "sof-rn.ri",
    102		.sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
    103	},
    104	{
    105		.id = "RTL5682",
    106		.drv_name = "rt5682s-max",
    107		.pdata = (void *)&acp_quirk_data,
    108		.machine_quirk = snd_soc_acpi_codec_list,
    109		.quirk_data = &amp_max,
    110		.fw_filename = "sof-rn.ri",
    111		.sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
    112	},
    113	{
    114		.id = "RTL5682",
    115		.drv_name = "rt5682s-rt1019",
    116		.pdata = (void *)&acp_quirk_data,
    117		.machine_quirk = snd_soc_acpi_codec_list,
    118		.quirk_data = &amp_rt1019,
    119		.fw_filename = "sof-rn.ri",
    120		.sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
    121	},
    122	{
    123		.id = "AMDI1019",
    124		.drv_name = "renoir-dsp",
    125		.pdata = (void *)&acp_quirk_data,
    126		.fw_filename = "sof-rn.ri",
    127		.sof_tplg_filename = "sof-acp.tplg",
    128	},
    129	{},
    130};
    131EXPORT_SYMBOL(snd_soc_acpi_amd_sof_machines);
    132
    133MODULE_LICENSE("Dual BSD/GPL");