Unverified Commit 9a19aba2 authored by Mark Brown's avatar Mark Brown
Browse files

ASOC: amd: acp: Add generic PDM and PCI driver support for ACP

Merge series from Ajit Kumar Pandey <AjitKumar.Pandey@amd.com>:

These changes add PDM and PCI drivers for AMD ACP hardware.
parents e0c8a67f 2d7d9f36
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ config SND_SOC_AMD_RV_RT5682_MACH

config SND_SOC_AMD_RENOIR
	tristate "AMD Audio Coprocessor - Renoir support"
	select SND_AMD_ACP_CONFIG
	depends on X86 && PCI
	help
	 This option enables ACP support for Renoir platform
+10 −0
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@ config SND_SOC_AMD_ACP_COMMON

if SND_SOC_AMD_ACP_COMMON

config SND_SOC_AMD_ACP_PDM
	tristate

config SND_SOC_AMD_ACP_I2S
	tristate

@@ -22,10 +25,17 @@ config SND_SOC_AMD_ACP_PCM
	tristate
	select SND_SOC_ACPI if ACPI

config SND_SOC_AMD_ACP_PCI
	tristate "AMD ACP PCI Driver Support"
	depends on X86 && PCI
	help
	  This options enables generic PCI driver for ACP device.

config SND_AMD_ASOC_RENOIR
	tristate "AMD ACP ASOC Renoir Support"
	select SND_SOC_AMD_ACP_PCM
	select SND_SOC_AMD_ACP_I2S
	select SND_SOC_AMD_ACP_PDM
	depends on X86 && PCI
	help
	  This option enables Renoir I2S support on AMD platform.
+4 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
#common acp driver
snd-acp-pcm-objs     := acp-platform.o
snd-acp-i2s-objs     := acp-i2s.o
snd-acp-pdm-objs     := acp-pdm.o
snd-acp-pci-objs     := acp-pci.o

#platform specific driver
snd-acp-renoir-objs     := acp-renoir.o
@@ -18,6 +20,8 @@ snd-acp-sof-mach-objs := acp-sof-mach.o

obj-$(CONFIG_SND_SOC_AMD_ACP_PCM) += snd-acp-pcm.o
obj-$(CONFIG_SND_SOC_AMD_ACP_I2S) += snd-acp-i2s.o
obj-$(CONFIG_SND_SOC_AMD_ACP_PDM) += snd-acp-pdm.o
obj-$(CONFIG_SND_SOC_AMD_ACP_PCI) += snd-acp-pci.o

obj-$(CONFIG_SND_AMD_ASOC_RENOIR) += snd-acp-renoir.o

+2 −2
Original line number Diff line number Diff line
@@ -23,10 +23,10 @@
static struct acp_card_drvdata rt5682_rt1019_data = {
	.hs_cpu_id = I2S_SP,
	.amp_cpu_id = I2S_SP,
	.dmic_cpu_id = NONE,
	.dmic_cpu_id = DMIC,
	.hs_codec_id = RT5682,
	.amp_codec_id = RT1019,
	.dmic_codec_id = NONE,
	.dmic_codec_id = DMIC,
	.gpio_spkr_en = EN_SPKR_GPIO_GB,
};

+21 −0
Original line number Diff line number Diff line
@@ -438,6 +438,8 @@ SND_SOC_DAILINK_DEF(sof_sp,
	DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-sp")));
SND_SOC_DAILINK_DEF(sof_dmic,
	DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-dmic")));
SND_SOC_DAILINK_DEF(pdm_dmic,
	DAILINK_COMP_ARRAY(COMP_CPU("acp-pdm-dmic")));

int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
{
@@ -613,6 +615,25 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
			links[i].ops = &acp_card_maxim_ops;
			links[i].init = acp_card_maxim_init;
		}
		i++;
	}

	if (drv_data->dmic_cpu_id == DMIC) {
		links[i].name = "acp-dmic-codec";
		links[i].id = DMIC_BE_ID;
		if (drv_data->dmic_codec_id == DMIC) {
			links[i].codecs = dmic_codec;
			links[i].num_codecs = ARRAY_SIZE(dmic_codec);
		} else {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
		}
		links[i].cpus = pdm_dmic;
		links[i].num_cpus = ARRAY_SIZE(pdm_dmic);
		links[i].platforms = platform_component;
		links[i].num_platforms = ARRAY_SIZE(platform_component);
		links[i].dpcm_capture = 1;
	}

	card->dai_link = links;
Loading