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

Commit e4a7e0c4 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "asoc: Expose mixer control to set noirq capture volume" into audio-drivers.lnx.2.0

parents 01b1032b d00e1069
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -644,7 +644,7 @@ static int msm_pcm_volume_ctl_get(struct snd_kcontrol *kcontrol,
{
	struct snd_pcm_volume *vol = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream =
		vol->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
		vol->pcm->streams[vol->stream].substream;
	struct msm_audio *prtd;

	pr_debug("%s\n", __func__);
@@ -668,7 +668,7 @@ static int msm_pcm_volume_ctl_put(struct snd_kcontrol *kcontrol,
	int rc = 0;
	struct snd_pcm_volume *vol = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream =
		vol->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
		vol->pcm->streams[vol->stream].substream;
	struct msm_audio *prtd;
	int volume = ucontrol->value.integer.value[0];

@@ -689,15 +689,16 @@ static int msm_pcm_volume_ctl_put(struct snd_kcontrol *kcontrol,
	return rc;
}

static int msm_pcm_add_volume_control(struct snd_soc_pcm_runtime *rtd)
static int msm_pcm_add_volume_control(struct snd_soc_pcm_runtime *rtd,
				      int stream)
{
	int ret = 0;
	struct snd_pcm *pcm = rtd->pcm;
	struct snd_pcm_volume *volume_info;
	struct snd_kcontrol *kctl;

	dev_dbg(rtd->dev, "%s, Volume control add\n", __func__);
	ret = snd_pcm_add_volume_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
	dev_dbg(rtd->dev, "%s, volume control add\n", __func__);
	ret = snd_pcm_add_volume_ctls(pcm, stream,
			NULL, 1, rtd->dai_link->id,
			&volume_info);
	if (ret < 0) {
@@ -1153,12 +1154,16 @@ static int msm_asoc_pcm_new(struct snd_soc_pcm_runtime *rtd)
		pr_err("%s failed to add chmap cntls\n", __func__);
		goto exit;
	}
	ret = msm_pcm_add_volume_control(rtd);
	ret = msm_pcm_add_volume_control(rtd, SNDRV_PCM_STREAM_PLAYBACK);
	if (ret) {
		pr_err("%s: Could not add pcm Volume Control %d\n",
		pr_err("%s: Could not add pcm playback volume Control %d\n",
			__func__, ret);
	}
	ret = msm_pcm_add_volume_control(rtd, SNDRV_PCM_STREAM_CAPTURE);
	if (ret) {
		pr_err("%s: Could not add pcm capture volume Control %d\n",
			__func__, ret);
	}

	ret = msm_pcm_add_fe_topology_control(rtd);
	if (ret) {
		pr_err("%s: Could not add pcm topology control %d\n",
+11 −7
Original line number Diff line number Diff line
@@ -1303,7 +1303,7 @@ static int msm_pcm_volume_ctl_get(struct snd_kcontrol *kcontrol,
{
	struct snd_pcm_volume *vol = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream =
		vol->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
		vol->pcm->streams[vol->stream].substream;
	struct msm_audio *prtd;

	pr_debug("%s\n", __func__);
@@ -1327,7 +1327,7 @@ static int msm_pcm_volume_ctl_put(struct snd_kcontrol *kcontrol,
	int rc = 0;
	struct snd_pcm_volume *vol = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream =
		vol->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
		vol->pcm->streams[vol->stream].substream;
	struct msm_audio *prtd;
	int volume = ucontrol->value.integer.value[0];

@@ -1348,15 +1348,16 @@ static int msm_pcm_volume_ctl_put(struct snd_kcontrol *kcontrol,
	return rc;
}

static int msm_pcm_add_volume_control(struct snd_soc_pcm_runtime *rtd)
static int msm_pcm_add_volume_control(struct snd_soc_pcm_runtime *rtd,
				      int stream)
{
	int ret = 0;
	struct snd_pcm *pcm = rtd->pcm;
	struct snd_pcm_volume *volume_info;
	struct snd_kcontrol *kctl;

	dev_dbg(rtd->dev, "%s, Volume control add\n", __func__);
	ret = snd_pcm_add_volume_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
	dev_dbg(rtd->dev, "%s, volume control add\n", __func__);
	ret = snd_pcm_add_volume_ctls(pcm, stream,
			NULL, 1, rtd->dai_link->id,
			&volume_info);
	if (ret < 0) {
@@ -1774,11 +1775,14 @@ static int msm_asoc_pcm_new(struct snd_soc_pcm_runtime *rtd)
		return ret;
	}

	ret = msm_pcm_add_volume_control(rtd);
	ret = msm_pcm_add_volume_control(rtd, SNDRV_PCM_STREAM_PLAYBACK);
	if (ret)
		pr_err("%s: Could not add pcm Volume Control %d\n",
			__func__, ret);
	ret = msm_pcm_add_volume_control(rtd, SNDRV_PCM_STREAM_CAPTURE);
	if (ret)
		pr_err("%s: Could not add pcm Volume Control %d\n",
			__func__, ret);

	ret = msm_pcm_add_compress_control(rtd);
	if (ret)
		pr_err("%s: Could not add pcm Compress Control %d\n",