[Sound-open-firmware] [PATCH] Volume, FIR EQ, IIR EQ, tone: Fix SOF_CTRL_CMD_SWITCH polarity

Seppo Ingalsuo seppo.ingalsuo at linux.intel.com
Mon Oct 23 15:55:13 CEST 2017


This patch inverts the use of switch value. A non-zero value
unmutes the audio path.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo at linux.intel.com>
---
 src/audio/eq_fir.c | 11 +++++++----
 src/audio/eq_iir.c |  9 +++++----
 src/audio/tone.c   |  9 +++++----
 src/audio/volume.c |  6 +++---
 4 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/audio/eq_fir.c b/src/audio/eq_fir.c
index 9056808..8babed3 100644
--- a/src/audio/eq_fir.c
+++ b/src/audio/eq_fir.c
@@ -33,6 +33,7 @@
 #include <stdint.h>
 #include <stddef.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <reef/reef.h>
 #include <reef/lock.h>
 #include <reef/list.h>
@@ -330,21 +331,23 @@ static int fir_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cda
 	struct comp_data *cd = comp_get_drvdata(dev);
 	int j;
 	uint32_t ch;
+	bool val;
 
 	if (cdata->cmd == SOF_CTRL_CMD_SWITCH) {
 		trace_eq("mst");
 		for (j = 0; j < cdata->num_elems; j++) {
 			ch = cdata->chanv[j].channel;
+			val = cdata->chanv[j].value;
 			tracev_value(ch);
-			tracev_value(cdata->chanv[j].value);
+			tracev_value(val);
 			if (ch >= PLATFORM_MAX_CHANNELS) {
 				trace_eq_error("che");
 				return -EINVAL;
 			}
-			if (cdata->chanv[j].value > 0)
-				fir_mute(&cd->fir[ch]);
-			else
+			if (val)
 				fir_unmute(&cd->fir[ch]);
+			else
+				fir_mute(&cd->fir[ch]);
 		}
 	} else {
 		trace_eq_error("ste");
diff --git a/src/audio/eq_iir.c b/src/audio/eq_iir.c
index d3a8fa3..88382fe 100644
--- a/src/audio/eq_iir.c
+++ b/src/audio/eq_iir.c
@@ -33,6 +33,7 @@
 #include <stdint.h>
 #include <stddef.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <reef/reef.h>
 #include <reef/lock.h>
 #include <reef/list.h>
@@ -331,7 +332,7 @@ static int iir_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cda
 	struct comp_data *cd = comp_get_drvdata(dev);
 	int j;
 	uint32_t ch;
-	uint32_t val;
+	bool val;
 
 	if (cdata->cmd == SOF_CTRL_CMD_SWITCH) {
 		trace_eq_iir("mst");
@@ -344,10 +345,10 @@ static int iir_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cda
 				trace_eq_iir_error("che");
 				return -EINVAL;
 			}
-			if (val > 0)
-				iir_mute_df2t(&cd->iir[ch]);
-			else
+			if (val)
 				iir_unmute_df2t(&cd->iir[ch]);
+			else
+				iir_mute_df2t(&cd->iir[ch]);
 		}
 	} else {
 		trace_eq_iir_error("ste");
diff --git a/src/audio/tone.c b/src/audio/tone.c
index d565c17..3eb08e9 100644
--- a/src/audio/tone.c
+++ b/src/audio/tone.c
@@ -33,6 +33,7 @@
 #include <stdint.h>
 #include <stddef.h>
 #include <errno.h>
+#include <stdbool.h>
 #include <reef/reef.h>
 #include <reef/lock.h>
 #include <reef/list.h>
@@ -466,7 +467,7 @@ static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cd
 	struct comp_data *cd = comp_get_drvdata(dev);
 	int j;
 	uint32_t ch;
-	uint32_t val;
+	bool val;
 
 	if (cdata->cmd == SOF_CTRL_CMD_SWITCH) {
 		trace_tone("mst");
@@ -479,10 +480,10 @@ static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cd
 				trace_tone_error("che");
 				return -EINVAL;
 			}
-			if (val > 0)
-				tonegen_mute(&cd->sg[ch]);
-			else
+			if (val)
 				tonegen_unmute(&cd->sg[ch]);
+			else
+				tonegen_mute(&cd->sg[ch]);
 
 		}
 	} else {
diff --git a/src/audio/volume.c b/src/audio/volume.c
index 28d3225..f52ab46 100644
--- a/src/audio/volume.c
+++ b/src/audio/volume.c
@@ -468,10 +468,10 @@ static int volume_ctrl_set_cmd(struct comp_dev *dev, struct sof_ipc_ctrl_data *c
 				tracev_value(cdata->chanv[j].channel);
 				tracev_value(cdata->chanv[j].value);
 				if (cdata->chanv[j].channel == cd->chan[i]) {
-					if (cdata->chanv[j].value > 0)
-						volume_set_chan_mute(dev, i);
-					else
+					if (cdata->chanv[j].value)
 						volume_set_chan_unmute(dev, i);
+					else
+						volume_set_chan_mute(dev, i);
 				}
 			}
 		}
-- 
2.11.0



More information about the Sound-open-firmware mailing list