From: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
To: lgirdwood@gmail.com, broonie@kernel.org
Cc: linux-sound@vger.kernel.org, kai.vehmanen@linux.intel.com,
ranjani.sridharan@linux.intel.com,
yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev,
seppo.ingalsuo@linux.intel.com, stable@vger.kernel.org
Subject: [PATCH v3 7/8] ASoC: SOF: ipc4: Add definition for generic bytes control
Date: Wed, 17 Dec 2025 16:39:44 +0200 [thread overview]
Message-ID: <20251217143945.2667-8-peter.ujfalusi@linux.intel.com> (raw)
In-Reply-To: <20251217143945.2667-1-peter.ujfalusi@linux.intel.com>
Currently IPC4 only supports module specific custom bytes controls, where
each control's param_id is module specific.
These bytes controls cannot be handled in a generic way, there is no clean
way to support for example notifications from firmware when their data
has been changed.
Add definition for generic bytes control which should be handled in a
similar way as the enum/switch controls.
The generic param id for BYTES is selected to be 202
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
---
sound/soc/sof/ipc4-topology.h | 9 +++++++--
sound/soc/sof/ipc4.c | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/sound/soc/sof/ipc4-topology.h b/sound/soc/sof/ipc4-topology.h
index 191b51d97993..9a028a59c553 100644
--- a/sound/soc/sof/ipc4-topology.h
+++ b/sound/soc/sof/ipc4-topology.h
@@ -368,19 +368,24 @@ struct sof_ipc4_control_data {
#define SOF_IPC4_SWITCH_CONTROL_PARAM_ID 200
#define SOF_IPC4_ENUM_CONTROL_PARAM_ID 201
+#define SOF_IPC4_BYTES_CONTROL_PARAM_ID 202
/**
* struct sof_ipc4_control_msg_payload - IPC payload for kcontrol parameters
* @id: unique id of the control
- * @num_elems: Number of elements in the chanv array
+ * @num_elems: Number of elements in the chanv array or number of bytes in data
* @reserved: reserved for future use, must be set to 0
* @chanv: channel ID and value array
+ * @data: binary payload
*/
struct sof_ipc4_control_msg_payload {
uint16_t id;
uint16_t num_elems;
uint32_t reserved[4];
- DECLARE_FLEX_ARRAY(struct sof_ipc4_ctrl_value_chan, chanv);
+ union {
+ DECLARE_FLEX_ARRAY(struct sof_ipc4_ctrl_value_chan, chanv);
+ DECLARE_FLEX_ARRAY(uint8_t, data);
+ };
} __packed;
/**
diff --git a/sound/soc/sof/ipc4.c b/sound/soc/sof/ipc4.c
index a58a5049e7ac..73d9f2083326 100644
--- a/sound/soc/sof/ipc4.c
+++ b/sound/soc/sof/ipc4.c
@@ -445,6 +445,7 @@ static bool sof_ipc4_tx_payload_for_get_data(struct sof_ipc4_msg *tx)
switch (tx->extension & SOF_IPC4_MOD_EXT_MSG_PARAM_ID_MASK) {
case SOF_IPC4_MOD_EXT_MSG_PARAM_ID(SOF_IPC4_SWITCH_CONTROL_PARAM_ID):
case SOF_IPC4_MOD_EXT_MSG_PARAM_ID(SOF_IPC4_ENUM_CONTROL_PARAM_ID):
+ case SOF_IPC4_MOD_EXT_MSG_PARAM_ID(SOF_IPC4_BYTES_CONTROL_PARAM_ID):
return true;
default:
return false;
--
2.52.0
next prev parent reply other threads:[~2025-12-17 14:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-17 14:39 [PATCH v3 0/8] ASoC: SOF: ipoc4: Support for generic bytes controls Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 1/8] ASoC: SOF: ipc4-control: If there is no data do not send bytes update Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 2/8] ASoC: SOF: ipc4-topology: Correct the allocation size for bytes controls Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 3/8] ASoC: SOF: ipc4-control: Use the correct size for scontrol->ipc_control_data Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 4/8] ASoC: SOF: ipc4-control: Keep the payload size up to date Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 5/8] ASoC: SOF: ipc4-topology: Set initial param_id for bytes control type Peter Ujfalusi
2025-12-17 14:39 ` [PATCH v3 6/8] ASoC: SOF: ipc4: Support for sending payload along with LARGE_CONFIG_GET Peter Ujfalusi
2025-12-17 14:39 ` Peter Ujfalusi [this message]
2025-12-17 14:39 ` [PATCH v3 8/8] ASoC: SOF: ipc4-control: Add support for generic bytes control Peter Ujfalusi
2025-12-19 14:09 ` [PATCH v3 0/8] ASoC: SOF: ipoc4: Support for generic bytes controls Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251217143945.2667-8-peter.ujfalusi@linux.intel.com \
--to=peter.ujfalusi@linux.intel.com \
--cc=broonie@kernel.org \
--cc=kai.vehmanen@linux.intel.com \
--cc=lgirdwood@gmail.com \
--cc=linux-sound@vger.kernel.org \
--cc=pierre-louis.bossart@linux.dev \
--cc=ranjani.sridharan@linux.intel.com \
--cc=seppo.ingalsuo@linux.intel.com \
--cc=stable@vger.kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox