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

Commit dd9977f0 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: msm: extend app type cfg mixer command with copp mode"

parents f9c63284 5e85dafc
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#include <linux/init.h>
@@ -683,7 +684,7 @@ static int msm_pcm_playback_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
	u64 fe_id = kcontrol->private_value;
	int session_type = SESSION_TYPE_RX;
	int be_id = ucontrol->value.integer.value[3];
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0};
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0, 0};
	int ret = 0;

	cfg_data.app_type = ucontrol->value.integer.value[0];
@@ -694,10 +695,12 @@ static int msm_pcm_playback_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
		cfg_data.copp_token = ucontrol->value.integer.value[4];
	if (ucontrol->value.integer.value[5] != 0)
		cfg_data.bit_width = ucontrol->value.integer.value[5];
	if (ucontrol->value.integer.value[6] != 0)
		cfg_data.copp_perf_mode = ucontrol->value.integer.value[6];
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
	ret = msm_pcm_routing_reg_stream_app_type_cfg(fe_id, session_type,
						      be_id, &cfg_data);
	if (ret < 0)
@@ -730,11 +733,12 @@ static int msm_pcm_playback_app_type_cfg_ctl_get(struct snd_kcontrol *kcontrol,
	ucontrol->value.integer.value[3] = be_id;
	ucontrol->value.integer.value[4] = cfg_data.copp_token;
	ucontrol->value.integer.value[5] = cfg_data.bit_width;
	ucontrol->value.integer.value[6] = cfg_data.copp_perf_mode;
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id,
		cfg_data.app_type, cfg_data.acdb_dev_id, cfg_data.sample_rate,
		cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);

done:
	return ret;
@@ -746,7 +750,7 @@ static int msm_pcm_capture_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
	u64 fe_id = kcontrol->private_value;
	int session_type = SESSION_TYPE_TX;
	int be_id = ucontrol->value.integer.value[3];
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0};
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0, 0};
	int ret = 0;

	cfg_data.app_type = ucontrol->value.integer.value[0];
@@ -757,10 +761,12 @@ static int msm_pcm_capture_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
		cfg_data.copp_token = ucontrol->value.integer.value[4];
	if (ucontrol->value.integer.value[5] != 0)
		cfg_data.bit_width = ucontrol->value.integer.value[5];
	if (ucontrol->value.integer.value[6] != 0)
		cfg_data.copp_perf_mode = ucontrol->value.integer.value[6];
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
	ret = msm_pcm_routing_reg_stream_app_type_cfg(fe_id, session_type,
						      be_id, &cfg_data);
	if (ret < 0)
@@ -793,11 +799,12 @@ static int msm_pcm_capture_app_type_cfg_ctl_get(struct snd_kcontrol *kcontrol,
	ucontrol->value.integer.value[3] = be_id;
	ucontrol->value.integer.value[4] = cfg_data.copp_token;
	ucontrol->value.integer.value[5] = cfg_data.bit_width;
	ucontrol->value.integer.value[6] = cfg_data.copp_perf_mode;
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id,
		cfg_data.app_type, cfg_data.acdb_dev_id, cfg_data.sample_rate,
		cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
done:
	return ret;
}
+17 −10
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */


@@ -2091,7 +2092,7 @@ static int msm_pcm_playback_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
	u64 fe_id = kcontrol->private_value;
	int session_type = SESSION_TYPE_RX;
	int be_id = ucontrol->value.integer.value[3];
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0};
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0, 0};
	int ret = 0;

	cfg_data.app_type = ucontrol->value.integer.value[0];
@@ -2102,10 +2103,12 @@ static int msm_pcm_playback_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
		cfg_data.copp_token = ucontrol->value.integer.value[4];
	if (ucontrol->value.integer.value[5] != 0)
		cfg_data.bit_width = ucontrol->value.integer.value[5];
	if (ucontrol->value.integer.value[6] != 0)
		cfg_data.copp_perf_mode = ucontrol->value.integer.value[6];
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
	ret = msm_pcm_routing_reg_stream_app_type_cfg(fe_id, session_type,
						      be_id, &cfg_data);
	if (ret < 0)
@@ -2138,10 +2141,11 @@ static int msm_pcm_playback_app_type_cfg_ctl_get(struct snd_kcontrol *kcontrol,
	ucontrol->value.integer.value[3] = be_id;
	ucontrol->value.integer.value[4] = cfg_data.copp_token;
	ucontrol->value.integer.value[5] = cfg_data.bit_width;
	ucontrol->value.integer.value[6] = cfg_data.copp_perf_mode;
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
done:
	return ret;
}
@@ -2152,7 +2156,7 @@ static int msm_pcm_capture_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
	u64 fe_id = kcontrol->private_value;
	int session_type = SESSION_TYPE_TX;
	int be_id = ucontrol->value.integer.value[3];
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0};
	struct msm_pcm_stream_app_type_cfg cfg_data = {0, 0, 48000, 0, 0, 0};
	int ret = 0;

	cfg_data.app_type = ucontrol->value.integer.value[0];
@@ -2163,10 +2167,12 @@ static int msm_pcm_capture_app_type_cfg_ctl_put(struct snd_kcontrol *kcontrol,
		cfg_data.copp_token = ucontrol->value.integer.value[4];
	if (ucontrol->value.integer.value[5] != 0)
		cfg_data.bit_width = ucontrol->value.integer.value[5];
	if (ucontrol->value.integer.value[6] != 0)
		cfg_data.copp_perf_mode = ucontrol->value.integer.value[6];
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
	ret = msm_pcm_routing_reg_stream_app_type_cfg(fe_id, session_type,
						      be_id, &cfg_data);
	if (ret < 0)
@@ -2199,10 +2205,11 @@ static int msm_pcm_capture_app_type_cfg_ctl_get(struct snd_kcontrol *kcontrol,
	ucontrol->value.integer.value[3] = be_id;
	ucontrol->value.integer.value[4] = cfg_data.copp_token;
	ucontrol->value.integer.value[5] = cfg_data.bit_width;
	ucontrol->value.integer.value[6] = cfg_data.copp_perf_mode;
	pr_debug("%s: fe_id- %llu session_type- %d be_id- %d app_type- %d acdb_dev_id- %d"
		"sample_rate- %d copp_token- %d bit_width- %d\n",
		"sample_rate- %d copp_token- %d bit_width- %d copp_perf_mode- %d\n",
		__func__, fe_id, session_type, be_id, cfg_data.app_type, cfg_data.acdb_dev_id,
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width);
		cfg_data.sample_rate, cfg_data.copp_token, cfg_data.bit_width, cfg_data.copp_perf_mode);
done:
	return ret;
}

asoc/msm-pcm-routing-v2.c

100755 → 100644
+50 −14
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */
#include <linux/init.h>
@@ -1283,6 +1284,30 @@ static bool is_mm_lsm_fe_id(int fe_id)
	return rc;
}
static int get_copp_perf_mode(int fe_id, int sess_type, int port)
{
	int fdai_mode, copp_perf_mode, flag, value;
	int rc = 0;
	if ((fe_id < 0) || (fe_id >= MSM_FRONTEND_DAI_MAX) ||
		(port < 0) || (port >= MSM_BACKEND_DAI_MAX) ||
		(sess_type != SESSION_TYPE_RX && sess_type != SESSION_TYPE_TX)) {
			pr_err("%s: Input out of bounds\n", __func__);
			return rc;
		}
	fdai_mode = fe_dai_map[fe_id][sess_type].perf_mode;
	copp_perf_mode = fe_dai_app_type_cfg[fe_id][sess_type][port].copp_perf_mode;
	flag = (copp_perf_mode & PP_PERF_MODE_FLAG_MASK);
	value = (copp_perf_mode & PP_PERF_MODE_VALUE_MASK);
	rc = fdai_mode;
	if ((flag != 0) && (value >= LEGACY_PCM_MODE) &&
		(value <= ULL_POST_PROCESSING_PCM_MODE)) {
			rc = value;
	}
	pr_debug("%s: Get copp_perf_mode = %d", __func__, rc);
	return rc;
}
/*
 * msm_pcm_routing_send_chmix_cfg:
 *	send the channel mixer command to mix the input channels
@@ -1476,11 +1501,11 @@ int msm_pcm_routing_reg_stream_app_type_cfg(
	}
	pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d,"
		"sample_rate %d, copp_token %d, bit_width %d\n",
		"sample_rate %d, copp_token %d, bit_width %d, copp_perf_mode %d\n",
		__func__, fedai_id, session_type, be_id,
		cfg_data->app_type, cfg_data->acdb_dev_id,
		cfg_data->sample_rate, cfg_data->copp_token,
		cfg_data->bit_width);
		cfg_data->bit_width, cfg_data->copp_perf_mode);
	if (!is_mm_lsm_fe_id(fedai_id)) {
		pr_err("%s: Invalid machine driver ID %d\n",
@@ -1564,11 +1589,11 @@ int msm_pcm_routing_get_stream_app_type_cfg(
	*bedai_id = be_id;
	*cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
	pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d,"
		"sample_rate %d, copp_token %d, bit_width %d\n",
		"sample_rate %d, copp_token %d, bit_width %d, copp_perf_mode %d\n",
		__func__, fedai_id, session_type, *bedai_id,
		cfg_data->app_type, cfg_data->acdb_dev_id,
		cfg_data->sample_rate, cfg_data->copp_token,
		cfg_data->bit_width);
		cfg_data->bit_width, cfg_data->copp_perf_mode);
done:
	return ret;
}
@@ -1906,6 +1931,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
	u16 bit_width = 16, be_bit_width;
	bool is_lsm;
	uint32_t copp_token = 0;
	int copp_perf_mode = 0;
	pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
		 __func__, fe_id, perf_mode, dspst_id,
@@ -1999,6 +2025,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
			}
			acdb_dev_id =
			fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
			copp_perf_mode = get_copp_perf_mode(fe_id, session_type, i);
			topology = msm_routing_get_adm_topology(fe_id,
								session_type,
								i);
@@ -2020,7 +2047,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
						SNDRV_PCM_FORMAT_S32_LE);
			copp_idx =
				adm_open(port_id, path_type, sample_rate,
					 channels, topology, perf_mode,
					 channels, topology, copp_perf_mode,
					 bit_width, app_type, acdb_dev_id,
					 session_type, passthr_mode, copp_token);
			if ((copp_idx < 0) ||
@@ -2308,6 +2335,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
	uint32_t passthr_mode = LEGACY_PCM;
	int ret = 0;
	uint32_t copp_token = 0;
	int copp_perf_mode = 0;
	if (fedai_id >= MSM_FRONTEND_DAI_MM_MAX_ID) {
		/* bad ID assigned in machine driver */
@@ -2380,7 +2408,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
								i);
			be_bit_width = msm_routing_get_bit_width(
                                                msm_bedais[i].format);
			copp_perf_mode = get_copp_perf_mode(fedai_id, session_type, i);
			if (hifi_filter_enabled && (msm_bedais[i].sample_rate ==
                                384000 ||msm_bedais[i].sample_rate == 352800)
				&& be_bit_width == 32)
@@ -2403,7 +2431,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
				copp_idx = adm_open_v2(port_id, path_type,
						sample_rate, channels, topology,
						perf_mode, bits_per_sample,
						copp_perf_mode, bits_per_sample,
						app_type, acdb_dev_id,
						session_type, passthr_mode,
						copp_token,
@@ -2414,7 +2442,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
			} else
				copp_idx = adm_open(port_id, path_type,
					    sample_rate, channels, topology,
					    perf_mode, bits_per_sample,
					    copp_perf_mode, bits_per_sample,
					    app_type, acdb_dev_id,
					    session_type, passthr_mode, copp_token);
			if ((copp_idx < 0) ||
@@ -2495,6 +2523,7 @@ void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
{
	int i, port_type, session_type, path_type, topology, port_id;
	struct msm_pcm_routing_fdai_data *fdai;
	int copp_perf_mode;
	if (!is_mm_lsm_fe_id(fedai_id)) {
		/* bad ID assigned in machine driver */
@@ -2536,7 +2565,8 @@ void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
			topology = adm_get_topology_for_port_copp_idx(
					port_id, idx);
			msm_routing_unload_topology(topology);
			adm_close(port_id, fdai->perf_mode, idx);
			copp_perf_mode = get_copp_perf_mode(fedai_id, session_type, i);
			adm_close(port_id, copp_perf_mode, idx);
			pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
				 __func__, copp, fedai_id, session_type, i);
			clear_bit(idx,
@@ -2580,6 +2610,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
	uint32_t passthr_mode;
	bool is_lsm;
	uint32_t copp_token = 0;
	int copp_perf_mode = 0;
	pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
@@ -2694,6 +2725,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
			be_bit_width = msm_routing_get_bit_width(
                                                msm_bedais[reg].format);
			copp_perf_mode = get_copp_perf_mode(val, session_type, reg);
			if (hifi_filter_enabled && (msm_bedais[reg].sample_rate
				== 384000 ||msm_bedais[reg].sample_rate ==
				352800) && be_bit_width == 32)
@@ -2701,7 +2733,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
							SNDRV_PCM_FORMAT_S32_LE);
			copp_idx = adm_open(port_id, path_type,
					    sample_rate, channels, topology,
					    fdai->perf_mode, bits_per_sample,
					    copp_perf_mode, bits_per_sample,
					    app_type, acdb_dev_id,
					    session_type, passthr_mode, copp_token);
			if ((copp_idx < 0) ||
@@ -2762,7 +2794,8 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
			topology = adm_get_topology_for_port_copp_idx(port_id,
								      idx);
			msm_routing_unload_topology(topology);
			adm_close(port_id, fdai->perf_mode, idx);
			copp_perf_mode = get_copp_perf_mode(val, session_type, reg);
			adm_close(port_id, copp_perf_mode, idx);
			pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
				 __func__, copp, val, session_type, reg,
				 topology);
@@ -41329,6 +41362,7 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
	int i, session_type, path_type, topology;
	struct msm_pcm_routing_bdai_data *bedai;
	struct msm_pcm_routing_fdai_data *fdai;
	int copp_perf_mode;
	pr_debug("%s: substream->pcm->id:%s\n",
		 __func__, substream->pcm->id);
@@ -41370,7 +41404,8 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
			topology = adm_get_topology_for_port_copp_idx(port_id,
								     idx);
			msm_routing_unload_topology(topology);
			adm_close(port_id, fdai->perf_mode, idx);
			copp_perf_mode = get_copp_perf_mode(i, session_type, be_id);
			adm_close(port_id, copp_perf_mode, idx);
			pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
				 __func__, copp, i, session_type, be_id,
				 topology);
@@ -41405,6 +41440,7 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
	struct media_format_info voc_be_media_format;
	bool is_lsm;
	uint32_t copp_token = 0;
	int copp_perf_mode = 0;
	pr_debug("%s: substream->pcm->id:%s\n",
		 __func__, substream->pcm->id);
@@ -41515,7 +41551,7 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
			be_bit_width = msm_routing_get_bit_width(
                                                bedai->format);
			copp_perf_mode = get_copp_perf_mode(i, session_type, be_id);
			if (hifi_filter_enabled && (bedai->sample_rate == 384000
				|| bedai->sample_rate == 352800) &&
				be_bit_width == 32)
@@ -41523,7 +41559,7 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
							SNDRV_PCM_FORMAT_S32_LE);
			copp_idx = adm_open(port_id, path_type,
					    sample_rate, channels, topology,
					    fdai->perf_mode, bits_per_sample,
					    copp_perf_mode, bits_per_sample,
					    app_type, acdb_dev_id,
					    session_type, fdai->passthr_mode, copp_token);
			if ((copp_idx < 0) ||
+4 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */
#ifndef _MSM_PCM_ROUTING_H
#define _MSM_PCM_ROUTING_H
@@ -688,6 +689,8 @@ enum {
#define STREAM_TYPE_ASM 0
#define STREAM_TYPE_LSM 1

#define PP_PERF_MODE_FLAG_MASK                0x10000
#define PP_PERF_MODE_VALUE_MASK               0xF
enum {
	ADM_TOPOLOGY_CAL_TYPE_IDX = 0,
	ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
@@ -743,6 +746,7 @@ struct msm_pcm_stream_app_type_cfg {
	int sample_rate;
	uint32_t copp_token;
	int bit_width;
	int copp_perf_mode;
};

/* dai_id: front-end ID,