Unverified Commit 2fcad03e authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown
Browse files

ASoC: SOF: ipc4-topology: Improve readability of sof_ipc4_prepare_dai_copier()



Remove the duplicated code paths to check for single bit depth and to
update the params with storing the parameters needed by the function and
have a single code section.

No functional change but the code is easier to follow.

Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarSeppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://msgid.link/r/20240530111918.21974-5-peter.ujfalusi@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 3b64fd2f
Loading
Loading
Loading
Loading
+18 −24
Original line number Diff line number Diff line
@@ -1590,8 +1590,10 @@ sof_ipc4_prepare_dai_copier(struct snd_sof_dev *sdev, struct snd_sof_dai *dai,
	struct sof_ipc4_available_audio_format *available_fmt;
	struct snd_pcm_hw_params dai_params = *params;
	struct sof_ipc4_copier_data *copier_data;
	struct sof_ipc4_pin_format *pin_fmts;
	struct sof_ipc4_copier *ipc4_copier;
	bool single_bitdepth;
	u32 num_pin_fmts;
	int ret;

	ipc4_copier = dai->private;
@@ -1605,32 +1607,24 @@ sof_ipc4_prepare_dai_copier(struct snd_sof_dev *sdev, struct snd_sof_dai *dai,
	 * format lookup
	 */
	if (dir == SNDRV_PCM_STREAM_PLAYBACK) {
		single_bitdepth = sof_ipc4_copier_is_single_bitdepth(sdev,
						available_fmt->output_pin_fmts,
						available_fmt->num_output_formats);

		/* Update the dai_params with the only supported format */
		if (single_bitdepth) {
			ret = sof_ipc4_update_hw_params(sdev, &dai_params,
					&available_fmt->output_pin_fmts[0].audio_fmt,
					BIT(SNDRV_PCM_HW_PARAM_FORMAT));
			if (ret)
				return ret;
		}
		pin_fmts = available_fmt->output_pin_fmts;
		num_pin_fmts = available_fmt->num_output_formats;
	} else {
		single_bitdepth = sof_ipc4_copier_is_single_bitdepth(sdev,
						available_fmt->input_pin_fmts,
						available_fmt->num_input_formats);
		pin_fmts = available_fmt->input_pin_fmts;
		num_pin_fmts = available_fmt->num_input_formats;
	}

	single_bitdepth = sof_ipc4_copier_is_single_bitdepth(sdev, pin_fmts,
							     num_pin_fmts);

	/* Update the dai_params with the only supported format */
	if (single_bitdepth) {
		ret = sof_ipc4_update_hw_params(sdev, &dai_params,
					&available_fmt->input_pin_fmts[0].audio_fmt,
						&pin_fmts[0].audio_fmt,
						BIT(SNDRV_PCM_HW_PARAM_FORMAT));
		if (ret)
			return ret;
	}
	}

	ret = snd_sof_get_nhlt_endpoint_data(sdev, dai, single_bitdepth,
					     &dai_params,