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

Commit eca0432f authored by Surendar Karka's avatar Surendar Karka Committed by Trinath Thammishetty
Browse files

asoc: mixer control queue handling in sink stream



Mixer control queue handling is required only for
playback. Move mixer control queue handling to be
part of the playback stream in DSP transcode loopback
driver.

Change-Id: Ia8067237f80d509f969cf454f5afa08aaa6b0e52
Signed-off-by: default avatarSiddartha Shaik <sshaik@codeaurora.org>
Signed-off-by: default avatarSurendar Karka <skarka@codeaurora.org>
parent a0a95240
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@ static void loopback_event_handler(uint32_t opcode,
		return;
	}

	cstream = trans->source.cstream;
	cstream = trans->sink.cstream;
	ac = trans->audio_client;

	/*
@@ -222,6 +222,7 @@ static int msm_transcode_loopback_open(struct snd_compr_stream *cstream)
			ret = -EINVAL;
			goto exit;
		}
		msm_adsp_init_mixer_ctl_pp_event_queue(rtd);
	}

	pr_debug("%s: num stream%d, stream name %s\n", __func__,
@@ -236,8 +237,7 @@ static int msm_transcode_loopback_open(struct snd_compr_stream *cstream)
	}

	runtime->private_data = trans;
	if (trans->num_streams == 1)
		msm_adsp_init_mixer_ctl_pp_event_queue(rtd);

exit:
	mutex_unlock(&trans->lock);
	return ret;
@@ -282,14 +282,14 @@ static int msm_transcode_loopback_free(struct snd_compr_stream *cstream)
	trans->num_streams--;
	stop_transcoding(trans);

	if (cstream->direction == SND_COMPRESS_PLAYBACK)
	if (cstream->direction == SND_COMPRESS_PLAYBACK) {
		memset(&trans->sink, 0, sizeof(struct loopback_stream));
	else if (cstream->direction == SND_COMPRESS_CAPTURE)
		msm_adsp_clean_mixer_ctl_pp_event_queue(rtd);
	} else if (cstream->direction == SND_COMPRESS_CAPTURE) {
		memset(&trans->source, 0, sizeof(struct loopback_stream));
	}

	trans->session_state = LOOPBACK_SESSION_CLOSE;
	if (trans->num_streams == 1)
		msm_adsp_clean_mixer_ctl_pp_event_queue(rtd);
	mutex_unlock(&trans->lock);
	return ret;
}