diff options
author | Subhransu S. Prusty <subhransu.s.prusty@intel.com> | 2015-10-22 13:52:37 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-10-23 12:31:34 -0400 |
commit | 4d8adccb220ca270cfcdd80752618095fdc9990c (patch) | |
tree | e803369730c6c57d16d918133017a7c0b55260ef | |
parent | f0900eb213e0f6f37e1567531f9604b9bed6771d (diff) |
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: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/intel/skylake/skl-topology.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c index 0fba39dcb2ab..68e1b00ce7ed 100644 --- a/sound/soc/intel/skylake/skl-topology.c +++ b/sound/soc/intel/skylake/skl-topology.c | |||
@@ -944,48 +944,60 @@ static int skl_tplg_be_set_src_pipe_params(struct snd_soc_dai *dai, | |||
944 | struct skl_pipe_params *params) | 944 | struct skl_pipe_params *params) |
945 | { | 945 | { |
946 | struct snd_soc_dapm_path *p; | 946 | struct snd_soc_dapm_path *p; |
947 | int ret = -EIO; | ||
947 | 948 | ||
948 | snd_soc_dapm_widget_for_each_source_path(w, p) { | 949 | snd_soc_dapm_widget_for_each_source_path(w, p) { |
949 | if (p->connect && is_skl_dsp_widget_type(p->source) && | 950 | if (p->connect && is_skl_dsp_widget_type(p->source) && |
950 | p->source->priv) { | 951 | p->source->priv) { |
951 | 952 | ||
952 | if (!p->source->power) | 953 | if (!p->source->power) { |
953 | return skl_tplg_be_fill_pipe_params( | 954 | ret = skl_tplg_be_fill_pipe_params( |
954 | dai, p->source->priv, | 955 | dai, p->source->priv, |
955 | params); | 956 | params); |
956 | else | 957 | if (ret < 0) |
958 | return ret; | ||
959 | } else { | ||
957 | return -EBUSY; | 960 | return -EBUSY; |
961 | } | ||
958 | } else { | 962 | } else { |
959 | return skl_tplg_be_set_src_pipe_params( | 963 | ret = skl_tplg_be_set_src_pipe_params( |
960 | dai, p->source, params); | 964 | dai, p->source, params); |
965 | if (ret < 0) | ||
966 | return ret; | ||
961 | } | 967 | } |
962 | } | 968 | } |
963 | 969 | ||
964 | return -EIO; | 970 | return ret; |
965 | } | 971 | } |
966 | 972 | ||
967 | static int skl_tplg_be_set_sink_pipe_params(struct snd_soc_dai *dai, | 973 | static int skl_tplg_be_set_sink_pipe_params(struct snd_soc_dai *dai, |
968 | struct snd_soc_dapm_widget *w, struct skl_pipe_params *params) | 974 | struct snd_soc_dapm_widget *w, struct skl_pipe_params *params) |
969 | { | 975 | { |
970 | struct snd_soc_dapm_path *p = NULL; | 976 | struct snd_soc_dapm_path *p = NULL; |
977 | int ret = -EIO; | ||
971 | 978 | ||
972 | snd_soc_dapm_widget_for_each_sink_path(w, p) { | 979 | snd_soc_dapm_widget_for_each_sink_path(w, p) { |
973 | if (p->connect && is_skl_dsp_widget_type(p->sink) && | 980 | if (p->connect && is_skl_dsp_widget_type(p->sink) && |
974 | p->sink->priv) { | 981 | p->sink->priv) { |
975 | 982 | ||
976 | if (!p->sink->power) | 983 | if (!p->sink->power) { |
977 | return skl_tplg_be_fill_pipe_params( | 984 | ret = skl_tplg_be_fill_pipe_params( |
978 | dai, p->sink->priv, params); | 985 | dai, p->sink->priv, params); |
979 | else | 986 | if (ret < 0) |
987 | return ret; | ||
988 | } else { | ||
980 | return -EBUSY; | 989 | return -EBUSY; |
990 | } | ||
981 | 991 | ||
982 | } else { | 992 | } else { |
983 | return skl_tplg_be_set_sink_pipe_params( | 993 | ret = skl_tplg_be_set_sink_pipe_params( |
984 | dai, p->sink, params); | 994 | dai, p->sink, params); |
995 | if (ret < 0) | ||
996 | return ret; | ||
985 | } | 997 | } |
986 | } | 998 | } |
987 | 999 | ||
988 | return -EIO; | 1000 | return ret; |
989 | } | 1001 | } |
990 | 1002 | ||
991 | /* | 1003 | /* |