[Sound-open-firmware] [RFC PATCH 2/6] tone: add command handler to return tone state and compute tone sample rate
Ranjani Sridharan
ranjani.sridharan at linux.intel.com
Thu Jun 14 05:29:53 CEST 2018
This patch adds the get() handler to respond to requests for the current
tone state.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
---
src/audio/tone.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/audio/tone.c b/src/audio/tone.c
index eee6091..d02e35f 100644
--- a/src/audio/tone.c
+++ b/src/audio/tone.c
@@ -462,6 +462,25 @@ static int tone_params(struct comp_dev *dev)
return 0;
}
+static int tone_cmd_get_value(struct comp_dev *dev,
+ struct sof_ipc_ctrl_data *cdata)
+{
+ struct comp_data *cd = comp_get_drvdata(dev);
+ int j;
+
+ trace_tone("mgt");
+
+ if (cdata->cmd == SOF_CTRL_CMD_SWITCH) {
+ for (j = 0; j < cdata->num_elems; j++) {
+ cdata->chanv[j].channel = j;
+ cdata->chanv[j].value = !cd->sg[j].mute;
+ trace_value(j);
+ trace_value(cd->sg[j].mute);
+ }
+ }
+ return 0;
+}
+
static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cdata)
{
struct comp_data *cd = comp_get_drvdata(dev);
@@ -480,6 +499,7 @@ static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cd
trace_tone_error("che");
return -EINVAL;
}
+
if (val)
tonegen_unmute(&cd->sg[ch]);
else
@@ -583,6 +603,9 @@ static int tone_cmd(struct comp_dev *dev, int cmd, void *data)
case COMP_CMD_SET_VALUE:
ret = tone_cmd_set_value(dev, cdata);
break;
+ case COMP_CMD_GET_VALUE:
+ ret = tone_cmd_get_value(dev, cdata);
+ break;
}
return ret;
--
2.17.1
More information about the Sound-open-firmware
mailing list