Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80417e55 authored by Derek Chen's avatar Derek Chen Committed by Gerrit - the friendly Code Review server
Browse files

ASoC: msm: add soc audio snd virtualization support



Add soc audio sound card SND_SOC_MSM8996_VM for
virtualization support.
The virtualized audio snd soc is based on legacy
soc msm8996, removing dependency on ARCH_MSM8996
and various soc codec/slimbus and hwdep driver as
well as DTS/SRS PP features.

CRs-fixed: 2047379
Change-Id: I930bf78c2ebf2c605331b50a598b5a43ceed0e0f
Signed-off-by: default avatarDerek Chen <chenche@codeaurora.org>
parent 1bc3c0f6
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -22,6 +22,17 @@ config SND_SOC_QDSP6V2
	 audio drivers. This includes q6asm, q6adm,
	 q6afe interfaces to DSP using apr.

config SND_SOC_QDSP6V2_VM
	tristate "SoC ALSA audio driver for QDSP6V2 virtualization"
	depends on MSM_QDSP6_APRV2_VM
	select SND_SOC_COMPRESS
	help
	 To add support for MSM QDSP6V2 virtualization
	 Soc Audio.
	 This will enable sound soc platform specific
	 audio drivers. This includes q6asm, q6adm,
	 q6afe interfaces to DSP using virtualized apr.

config SND_SOC_QDSP_DEBUG
	bool "QDSP Audio Driver Debug Feature"
	help
@@ -70,7 +81,7 @@ config DTS_SRS_TM

config QTI_PP
	bool "Enable QTI PP"
	depends on SND_SOC_MSM_QDSP6V2_INTF
	depends on SND_SOC_MSM_QDSP6V2_INTF || SND_SOC_QDSP6V2_VM
	help
	 To add support for default QTI post processing.
	 This support is to configure the post processing
@@ -192,6 +203,22 @@ config SND_SOC_MSM8996
	 the machine driver and the corresponding
	 DAI-links

config SND_SOC_MSM8996_VM
	tristate "SoC Machine driver for MSM8996 virtualization"
	select SND_SOC_QDSP6V2_VM
	select SND_SOC_MSM_STUB
	select SND_SOC_MSM_HOSTLESS_PCM
	select SND_DYNAMIC_MINORS
	select MSM_QDSP6_APRV2_VM
	select QTI_PP
	help
	 To add support for SoC audio on MSM8996
	 virtualization platform.
	 This will enable sound soc drivers which
	 interfaces with DSP using virtualized apr,
	 also it will enable the machine driver and
	 the corresponding DAI-links

config SND_SOC_MSM8998
	tristate "SoC Machine driver for MSM8998 boards"
	depends on ARCH_QCOM
+6 −0
Original line number Diff line number Diff line
@@ -4,9 +4,11 @@ snd-soc-hostless-pcm-objs := msm-pcm-hostless.o
obj-$(CONFIG_SND_SOC_MSM_HOSTLESS_PCM) += snd-soc-hostless-pcm.o

obj-$(CONFIG_SND_SOC_MSM_QDSP6V2_INTF) += qdsp6v2/
obj-$(CONFIG_SND_SOC_QDSP6V2_VM) += qdsp6v2/

snd-soc-qdsp6v2-objs := msm-dai-fe.o
obj-$(CONFIG_SND_SOC_QDSP6V2) += snd-soc-qdsp6v2.o
obj-$(CONFIG_SND_SOC_QDSP6V2_VM) += snd-soc-qdsp6v2.o

#for CPE drivers
snd-soc-cpe-objs := msm-cpe-lsm.o
@@ -16,6 +18,10 @@ obj-$(CONFIG_SND_SOC_CPE) += snd-soc-cpe.o
snd-soc-msm8996-objs := msm8996.o apq8096-auto.o
obj-$(CONFIG_SND_SOC_MSM8996) += snd-soc-msm8996.o

# for MSM8996 virtualization sound card driver
snd-soc-msm8996-vm-objs := apq8096-auto.o
obj-$(CONFIG_SND_SOC_MSM8996_VM) += snd-soc-msm8996-vm.o

# for MSM8998 sound card driver
snd-soc-msm8998-objs := msm8998.o
obj-$(CONFIG_SND_SOC_MSM8998) += snd-soc-msm8998.o
+5 −2
Original line number Diff line number Diff line
@@ -4,10 +4,13 @@ snd-soc-qdsp6v2-objs += msm-dai-q6-v2.o msm-pcm-q6-v2.o msm-pcm-routing-v2.o \
			msm-pcm-voice-v2.o msm-dai-q6-hdmi-v2.o \
			msm-lsm-client.o msm-pcm-host-voice-v2.o \
			msm-audio-effects-q6-v2.o msm-pcm-loopback-v2.o \
			msm-dai-slim.o msm-transcode-loopback-q6-v2.o \
			msm-transcode-loopback-q6-v2.o \
			adsp_err.o
obj-$(CONFIG_SLIMBUS) += msm-dai-slim.o audio_slimslave.o
obj-$(CONFIG_SND_SOC_QDSP6V2) += snd-soc-qdsp6v2.o msm-pcm-dtmf-v2.o \
				 msm-dai-stub-v2.o
obj-$(CONFIG_SND_SOC_QDSP6V2_VM) += snd-soc-qdsp6v2.o msm-pcm-dtmf-v2.o \
				 msm-dai-stub-v2.o
obj-$(CONFIG_SND_HWDEP) += msm-pcm-routing-devdep.o
obj-$(CONFIG_DOLBY_DAP) += msm-dolby-dap-config.o
obj-$(CONFIG_DOLBY_DS2) += msm-ds2-dap-config.o
@@ -15,7 +18,7 @@ obj-$(CONFIG_DOLBY_LICENSE) += msm-ds2-dap-config.o
obj-$(CONFIG_DTS_SRS_TM) += msm-dts-srs-tm-config.o
obj-$(CONFIG_QTI_PP) += msm-qti-pp-config.o
obj-y += audio_calibration.o audio_cal_utils.o q6adm.o q6afe.o q6asm.o \
	q6audio-v2.o q6voice.o q6core.o rtac.o q6lsm.o audio_slimslave.o \
	q6audio-v2.o q6voice.o q6core.o rtac.o q6lsm.o \
	msm-pcm-q6-noirq.o
ocmem-audio-objs += audio_ocmem.o
obj-$(CONFIG_AUDIO_OCMEM) += ocmem-audio.o
+6 −1
Original line number Diff line number Diff line
@@ -424,7 +424,7 @@ static int msm_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
	return ret;
}


#ifdef CONFIG_SND_HWDEP
static int msm_pcm_mmap_fd(struct snd_pcm_substream *substream,
			   struct snd_pcm_mmap_fd *mmap_fd)
{
@@ -459,6 +459,7 @@ static int msm_pcm_mmap_fd(struct snd_pcm_substream *substream,
	}
	return mmap_fd->fd < 0 ? -EFAULT : 0;
}
#endif

static int msm_pcm_ioctl(struct snd_pcm_substream *substream,
			 unsigned int cmd, void *arg)
@@ -1042,6 +1043,7 @@ static int msm_pcm_add_app_type_controls(struct snd_soc_pcm_runtime *rtd)
	return 0;
}

#ifdef CONFIG_SND_HWDEP
static int msm_pcm_hwdep_ioctl(struct snd_hwdep *hw, struct file *file,
			       unsigned int cmd, unsigned long arg)
{
@@ -1137,6 +1139,7 @@ static int msm_pcm_add_hwdep_dev(struct snd_soc_pcm_runtime *runtime)
	hwdep->ops.ioctl_compat = msm_pcm_hwdep_compat_ioctl;
	return 0;
}
#endif

static int msm_asoc_pcm_new(struct snd_soc_pcm_runtime *rtd)
{
@@ -1170,9 +1173,11 @@ static int msm_asoc_pcm_new(struct snd_soc_pcm_runtime *rtd)
		pr_err("%s: Could not add app type controls failed %d\n",
			__func__, ret);
	}
#ifdef CONFIG_SND_HWDEP
	ret = msm_pcm_add_hwdep_dev(rtd);
	if (ret)
		pr_err("%s: Could not add hw dep node\n", __func__);
#endif
	pcm->nonatomic = true;
exit:
	return ret;