Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/soc/amd/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 7 kB image not shown  

Quelle  acp-config.c   Sprache: C

 
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
//
// This file is provided under a dual BSD/GPLv2 license. When using or
// redistributing this file, you may do so under either license.
//
// Copyright(c) 2021, 2023 Advanced Micro Devices, Inc.
//
// Authors: Ajit Kumar Pandey <AjitKumar.Pandey@amd.com>
//

/* ACP machine configuration module */

#include <linux/acpi.h>
#include <linux/bits.h>
#include <linux/dmi.h>
#include <linux/module.h>
#include <linux/pci.h>

#include "../sof/amd/acp.h"
#include "mach-config.h"

#define ACP_7_0_REV 0x70

static int acp_quirk_data;

static const struct config_entry config_table[] = {
 {
  .flags = FLAG_AMD_SOF,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_MATCH(DMI_SYS_VENDOR, "AMD"),
     DMI_MATCH(DMI_PRODUCT_NAME, "Majolica-CZN"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_SOF,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_MATCH(DMI_SYS_VENDOR, "Google"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_MATCH(DMI_SYS_VENDOR, "Valve"),
     DMI_MATCH(DMI_PRODUCT_NAME, "Jupiter"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_SOF,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_MATCH(DMI_SYS_VENDOR, "Valve"),
     DMI_MATCH(DMI_PRODUCT_NAME, "Galileo"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "KLVL-WXXW"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1010"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "KLVL-WXX9"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1010"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BOM-WXX9"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1010"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HVY-WXX9"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1010"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HVY-WXX9"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1020"),
    },
   },
   {}
  },
 },
 {
  .flags = FLAG_AMD_LEGACY,
  .device = ACP_PCI_DEV_ID,
  .dmi_table = (const struct dmi_system_id []) {
   {
    .matches = {
     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HUAWEI"),
     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HVY-WXX9"),
     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "M1040"),
    },
   },
   {}
  },
 },
};

static int snd_amd_acp_acpi_find_config(struct pci_dev *pci)
{
 const union acpi_object *obj;
 int acp_flag = FLAG_AMD_LEGACY_ONLY_DMIC;

 if (!acpi_dev_get_property(ACPI_COMPANION(&pci->dev), "acp-audio-config-flag",
       ACPI_TYPE_INTEGER, &obj))
  acp_flag = obj->integer.value;

 return acp_flag;
}

int snd_amd_acp_find_config(struct pci_dev *pci)
{
 const struct config_entry *table = config_table;
 u16 device = pci->device;
 int i;

 /* Do not enable FLAGS on older platforms with Rev Id zero
 * For platforms which has ACP 7.0 or higher, read the acp
 * config flag from BIOS ACPI table and for older platforms
 * read it from DMI tables.
 */

 if (!pci->revision)
  return 0;
 else if (pci->revision >= ACP_7_0_REV)
  return snd_amd_acp_acpi_find_config(pci);

 for (i = 0; i < ARRAY_SIZE(config_table); i++, table++) {
  if (table->device != device)
   continue;
  if (table->dmi_table && !dmi_check_system(table->dmi_table))
   continue;
  acp_quirk_data = table->flags;
  return table->flags;
 }

 return 0;
}
EXPORT_SYMBOL(snd_amd_acp_find_config);

static struct snd_soc_acpi_codecs amp_rt1019 = {
 .num_codecs = 1,
 .codecs = {"10EC1019"}
};

static struct snd_soc_acpi_codecs amp_max = {
 .num_codecs = 1,
 .codecs = {"MX98360A"}
};

static struct snd_soc_acpi_codecs amp_max98388 = {
 .num_codecs = 1,
 .codecs = {"ADS8388"}
};

struct snd_soc_acpi_mach snd_soc_acpi_amd_sof_machines[] = {
 {
  .id = "10EC5682",
  .drv_name = "rt5682-rt1019",
  .pdata = (void *)&acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_rt1019,
  .fw_filename = "sof-rn.ri",
  .sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
 },
 {
  .id = "10EC5682",
  .drv_name = "rt5682-max",
  .pdata = (void *)&acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_max,
  .fw_filename = "sof-rn.ri",
  .sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
 },
 {
  .id = "RTL5682",
  .drv_name = "rt5682s-max",
  .pdata = (void *)&acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_max,
  .fw_filename = "sof-rn.ri",
  .sof_tplg_filename = "sof-rn-rt5682-max98360.tplg",
 },
 {
  .id = "RTL5682",
  .drv_name = "rt5682s-rt1019",
  .pdata = (void *)&acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_rt1019,
  .fw_filename = "sof-rn.ri",
  .sof_tplg_filename = "sof-rn-rt5682-rt1019.tplg",
 },
 {
  .id = "AMDI1019",
  .drv_name = "renoir-dsp",
  .pdata = (void *)&acp_quirk_data,
  .fw_filename = "sof-rn.ri",
  .sof_tplg_filename = "sof-acp.tplg",
 },
 {},
};
EXPORT_SYMBOL(snd_soc_acpi_amd_sof_machines);

struct snd_soc_acpi_mach snd_soc_acpi_amd_vangogh_sof_machines[] = {
 {
  .id = "NVTN2020",
  .drv_name = "nau8821-max",
  .pdata = &acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_max98388,
  .fw_filename = "sof-vangogh.ri",
  .sof_tplg_filename = "sof-vangogh-nau8821-max.tplg",
 },
 {},
};
EXPORT_SYMBOL(snd_soc_acpi_amd_vangogh_sof_machines);

struct snd_soc_acpi_mach snd_soc_acpi_amd_rmb_sof_machines[] = {
 {
  .id = "AMDI1019",
  .drv_name = "rmb-dsp",
  .pdata = &acp_quirk_data,
  .fw_filename = "sof-rmb.ri",
  .sof_tplg_filename = "sof-acp-rmb.tplg",
 },
 {
  .id = "10508825",
  .drv_name = "nau8825-max",
  .pdata = &acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_max,
  .fw_filename = "sof-rmb.ri",
  .sof_tplg_filename = "sof-rmb-nau8825-max98360.tplg",
 },
 {
  .id = "RTL5682",
  .drv_name = "rt5682s-hs-rt1019",
  .pdata = &acp_quirk_data,
  .machine_quirk = snd_soc_acpi_codec_list,
  .quirk_data = &_rt1019,
  .fw_filename = "sof-rmb.ri",
  .sof_tplg_filename = "sof-rmb-rt5682s-rt1019.tplg",
 },
 {},
};
EXPORT_SYMBOL(snd_soc_acpi_amd_rmb_sof_machines);

struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sof_machines[] = {
 {
  .id = "AMDI1019",
  .drv_name = "acp63-dsp",
  .pdata = &acp_quirk_data,
  .fw_filename = "sof-acp_6_3.ri",
  .sof_tplg_filename = "sof-acp_6_3.tplg",
 },
 {},
};
EXPORT_SYMBOL(snd_soc_acpi_amd_acp63_sof_machines);

struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sof_machines[] = {
 {
  .id = "AMDI1010",
  .drv_name = "acp70-dsp",
  .pdata = &acp_quirk_data,
  .fw_filename = "sof-acp_7_0.ri",
  .sof_tplg_filename = "sof-acp_7_0.tplg",
 },
 {},
};
EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sof_machines);

MODULE_DESCRIPTION("AMD ACP Machine Configuration Module");
MODULE_LICENSE("Dual BSD/GPL");

Messung V0.5
C=97 H=97 G=96

¤ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.