提交 32fee7af 编写于 作者: B Benoît Thébaudeau 提交者: Mark Brown

ASoC: dapm: Fix dapm_set_path_status() connect

dapm_set_path_status() sets connect incorrectly in the case max > 1 with invert.
In that case, the raw disconnect value should be max, which corresponds to the
userspace value 0.

This use case currently does not appear upstream, but it could break
SOC_DAPM_SINGLE() or SOC_DAPM_SINGLE_TLV() elsewhere or in the future.

This patch completes commit 3a9abe8.

Cc: Liam Girdwood <lrg@ti.com>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: <alsa-devel@alsa-project.org>
Signed-off-by: NBenoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 890255e7
...@@ -321,11 +321,10 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w, ...@@ -321,11 +321,10 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
val = soc_widget_read(w, reg); val = soc_widget_read(w, reg);
val = (val >> shift) & mask; val = (val >> shift) & mask;
if (invert)
val = max - val;
if ((invert && !val) || (!invert && val)) p->connect = !!val;
p->connect = 1;
else
p->connect = 0;
} }
break; break;
case snd_soc_dapm_mux: { case snd_soc_dapm_mux: {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册