summaryrefslogtreecommitdiffstats
path: root/sound/soc/sof/stream-ipc.c
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>2022-03-10 05:27:16 +0100
committerMark Brown <broonie@kernel.org>2022-03-11 14:41:05 +0100
commit9a0a809a5aaeb09458c5f0d26fac63c213b0adb6 (patch)
tree930ab4385d6b089aeafc98ad84777c8c8d4d7130 /sound/soc/sof/stream-ipc.c
parentASoC: SOF: Mark snd_sof_dsp_ops.ipc_pcm_params() callback optional (diff)
downloadlinux-9a0a809a5aaeb09458c5f0d26fac63c213b0adb6.tar.xz
linux-9a0a809a5aaeb09458c5f0d26fac63c213b0adb6.zip
ASoC: SOF: stream-ipc: Add sof_set_stream_data_offset()
Add implementation for the generic set_stream_data_offset() callback in core to be used by platforms. Convert the sof_ipc_pcm_params() to a wrapper for the new function. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20220310042720.976809-7-ranjani.sridharan@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sof/stream-ipc.c')
-rw-r--r--sound/soc/sof/stream-ipc.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/sound/soc/sof/stream-ipc.c b/sound/soc/sof/stream-ipc.c
index 15a55851faeb..b7b96b9f5279 100644
--- a/sound/soc/sof/stream-ipc.c
+++ b/sound/soc/sof/stream-ipc.c
@@ -45,12 +45,11 @@ int sof_ipc_msg_data(struct snd_sof_dev *sdev,
}
EXPORT_SYMBOL(sof_ipc_msg_data);
-int sof_ipc_pcm_params(struct snd_sof_dev *sdev,
- struct snd_pcm_substream *substream,
- const struct sof_ipc_pcm_params_reply *reply)
+int sof_set_stream_data_offset(struct snd_sof_dev *sdev,
+ struct snd_pcm_substream *substream,
+ size_t posn_offset)
{
struct sof_stream *stream = substream->runtime->private_data;
- size_t posn_offset = reply->posn_offset;
/* check if offset is overflow or it is not aligned */
if (posn_offset > sdev->stream_box.size ||
@@ -64,6 +63,14 @@ int sof_ipc_pcm_params(struct snd_sof_dev *sdev,
return 0;
}
+EXPORT_SYMBOL(sof_set_stream_data_offset);
+
+int sof_ipc_pcm_params(struct snd_sof_dev *sdev,
+ struct snd_pcm_substream *substream,
+ const struct sof_ipc_pcm_params_reply *reply)
+{
+ return sof_set_stream_data_offset(sdev, substream, reply->posn_offset);
+}
EXPORT_SYMBOL(sof_ipc_pcm_params);
int sof_stream_pcm_open(struct snd_sof_dev *sdev,