aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorBenoît Thébaudeau <benoit.thebaudeau@advansee.com>2012-07-02 07:45:21 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-07-03 15:08:29 -0400
commit32fee7afe763344ef53bbd4e737aa6168a9308aa (patch)
tree92ae2dff2aee91861cf9bca565ef5438d6076ce5 /sound/soc
parent890255e704826a20caec54dcec1926316baf4263 (diff)
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: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/soc-dapm.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 89eae93445cf..5be4f9a2edb8 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -321,11 +321,10 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
321 321
322 val = soc_widget_read(w, reg); 322 val = soc_widget_read(w, reg);
323 val = (val >> shift) & mask; 323 val = (val >> shift) & mask;
324 if (invert)
325 val = max - val;
324 326
325 if ((invert && !val) || (!invert && val)) 327 p->connect = !!val;
326 p->connect = 1;
327 else
328 p->connect = 0;
329 } 328 }
330 break; 329 break;
331 case snd_soc_dapm_mux: { 330 case snd_soc_dapm_mux: {