Re: [PATCH 07/21] ASoC: amd: Add module to determine ACP configuration
From: Geert Uytterhoeven
Date: Tue Nov 30 2021 - 11:41:26 EST
Hi Daniel,
On Wed, Nov 17, 2021 at 12:39 PM Daniel Baluta
<daniel.baluta@xxxxxxxxxxx> wrote:
> From: Ajit Kumar Pandey <AjitKumar.Pandey@xxxxxxx>
>
> ACP hw block configuration differs across various distributions
> and hence it's required to register different drivers module for
> distributions. For now we support three ACP drivers:
>
> * ACP without SOF use case
> * ACP with SOF use case
> * ACP with SOF use case for DMIC and non SOF for I2S endpoints
>
> As all above driver registers with common PCI ID for ACP hw block
> we need code to determine ACP configuration and auto select driver
> module. This patch expose function that return configuration flag
> based on dmi checks for a system. ACP driver module probe register
> platform device based on such configuration flag to avoid conflict
> with other ACP drivers probed for same PCI ID.
>
> Signed-off-by: Ajit Kumar Pandey <AjitKumar.Pandey@xxxxxxx>
> Reviewed-by: Bard Liao <bard.liao@xxxxxxxxx>
> Reviewed-by: Kai Vehmanen <kai.vehmanen@xxxxxxxxxxxxxxx>
> Signed-off-by: Daniel Baluta <daniel.baluta@xxxxxxx>
Thanks for your patch, which is now commit f1bdd8d385a80356 ("ASoC:
amd: Add module to determine ACP configuration") in sound-asoc/for-next.
> --- a/sound/soc/amd/Kconfig
> +++ b/sound/soc/amd/Kconfig
> @@ -96,4 +96,10 @@ config SND_SOC_AMD_YC_MACH
> Say m if you have such a device.
> If unsure select "N".
>
> +config SND_AMD_ACP_CONFIG
> + tristate "AMD ACP configuration selection"
This definitely needs proper dependencies, to prevent asking the user
about this when configuring a kernel without AMD Audio ACP support.
I would have sent a patch, but...
> + help
> + This option adds an auto detection to determine which ACP
> + driver modules to use
> +
> source "sound/soc/amd/acp/Kconfig"
> --- /dev/null
> +++ b/sound/soc/amd/acp-config.c
> @@ -0,0 +1,81 @@
> +// 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 Advanced Micro Devices, Inc.
> +//
> +// Authors: Ajit Kumar Pandey <AjitKumar.Pandey@xxxxxxx>
> +//
> +
> +/* 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"
This doesn't seem to use anything from this header file?
> +#include "mach-config.h"
> +
> +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"),
> + },
> + },
> + {}
> + },
> + },
> +};
> +
> +int snd_amd_acp_find_config(struct pci_dev *pci)
> +{
> + const struct config_entry *table = config_table;
> + u16 device = pci->device;
> + int i;
> +
> + 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);
> +struct snd_soc_acpi_mach snd_soc_acpi_amd_acp_machines[] = {
> + {
> + .id = "AMDI1019",
> + .drv_name = "renoir-acp",
> + .pdata = (void *)&acp_quirk_data,
> + },
> + {},
> +};
> +EXPORT_SYMBOL(snd_soc_acpi_amd_acp_machines);
These symbols are only used from sound/soc/sof/amd/pci-rn.c.
Why is this code living under sound/soc/amd/, while the ACP code
is under sound/soc/amd/acp/?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds