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

Commit 4d8adccb authored by Subhransu S. Prusty's avatar Subhransu S. Prusty Committed by Mark Brown
Browse files

ASoC: Intel: Skylake: Fix to fill all sink/source pipe params



Currently params only for first copier widget identified in the
source/sink path is queried from NHLT. In the dapm route the
playback/capture widget may be connected to more than one copier
widget. This patch adds return check to return only for any error
case.

Signed-off-by: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: default avatarJeeja KP <jeeja.kp@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent f0900eb2
Loading
Loading
Loading
Loading
+22 −10
Original line number Diff line number Diff line
@@ -944,48 +944,60 @@ static int skl_tplg_be_set_src_pipe_params(struct snd_soc_dai *dai,
				struct skl_pipe_params *params)
{
	struct snd_soc_dapm_path *p;
	int ret = -EIO;

	snd_soc_dapm_widget_for_each_source_path(w, p) {
		if (p->connect && is_skl_dsp_widget_type(p->source) &&
						p->source->priv) {

			if (!p->source->power)
				return skl_tplg_be_fill_pipe_params(
			if (!p->source->power) {
				ret = skl_tplg_be_fill_pipe_params(
						dai, p->source->priv,
						params);
			else
				if (ret < 0)
					return ret;
			} else {
				return -EBUSY;
			}
		} else {
			return skl_tplg_be_set_src_pipe_params(
			ret = skl_tplg_be_set_src_pipe_params(
						dai, p->source,	params);
			if (ret < 0)
				return ret;
		}
	}

	return -EIO;
	return ret;
}

static int skl_tplg_be_set_sink_pipe_params(struct snd_soc_dai *dai,
	struct snd_soc_dapm_widget *w, struct skl_pipe_params *params)
{
	struct snd_soc_dapm_path *p = NULL;
	int ret = -EIO;

	snd_soc_dapm_widget_for_each_sink_path(w, p) {
		if (p->connect && is_skl_dsp_widget_type(p->sink) &&
						p->sink->priv) {

			if (!p->sink->power)
				return skl_tplg_be_fill_pipe_params(
			if (!p->sink->power) {
				ret = skl_tplg_be_fill_pipe_params(
						dai, p->sink->priv, params);
			else
				if (ret < 0)
					return ret;
			} else {
				return -EBUSY;
			}

		} else {
			return skl_tplg_be_set_sink_pipe_params(
			ret = skl_tplg_be_set_sink_pipe_params(
						dai, p->sink, params);
			if (ret < 0)
				return ret;
		}
	}

	return -EIO;
	return ret;
}

/*