Commit 249f186d authored by Daniel Baluta's avatar Daniel Baluta Committed by Mark Brown

ASoC: SOF: Prepare set_stream_data_offset for compress API

Make second parameter of set_stream_data_offset generic
in order to be used for both PCM and compress streams.

Current patch doesn't introduce any functional change,
just prepare the code for compress support.
Reviewed-by: default avatarPaul Olaru <paul.olaru@nxp.com>
Reviewed-by: default avatarIuliana Prodan <iuliana.prodan@nxp.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Signed-off-by: default avatarDaniel Baluta <daniel.baluta@nxp.com>
Link: https://lore.kernel.org/r/20230117122533.201708-3-daniel.baluta@oss.nxp.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1b905942
...@@ -222,9 +222,10 @@ int acp_sof_ipc_msg_data(struct snd_sof_dev *sdev, struct snd_sof_pcm_stream *sp ...@@ -222,9 +222,10 @@ int acp_sof_ipc_msg_data(struct snd_sof_dev *sdev, struct snd_sof_pcm_stream *sp
EXPORT_SYMBOL_NS(acp_sof_ipc_msg_data, SND_SOC_SOF_AMD_COMMON); EXPORT_SYMBOL_NS(acp_sof_ipc_msg_data, SND_SOC_SOF_AMD_COMMON);
int acp_set_stream_data_offset(struct snd_sof_dev *sdev, int acp_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset) size_t posn_offset)
{ {
struct snd_pcm_substream *substream = sps->substream;
struct acp_dsp_stream *stream = substream->runtime->private_data; struct acp_dsp_stream *stream = substream->runtime->private_data;
/* check for unaligned offset or overflow */ /* check for unaligned offset or overflow */
......
...@@ -215,7 +215,7 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context); ...@@ -215,7 +215,7 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context);
int acp_sof_ipc_msg_data(struct snd_sof_dev *sdev, struct snd_sof_pcm_stream *sps, int acp_sof_ipc_msg_data(struct snd_sof_dev *sdev, struct snd_sof_pcm_stream *sps,
void *p, size_t sz); void *p, size_t sz);
int acp_set_stream_data_offset(struct snd_sof_dev *sdev, int acp_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset); size_t posn_offset);
int acp_sof_ipc_send_msg(struct snd_sof_dev *sdev, int acp_sof_ipc_send_msg(struct snd_sof_dev *sdev,
struct snd_sof_ipc_msg *msg); struct snd_sof_ipc_msg *msg);
......
...@@ -386,9 +386,10 @@ int hda_ipc_msg_data(struct snd_sof_dev *sdev, ...@@ -386,9 +386,10 @@ int hda_ipc_msg_data(struct snd_sof_dev *sdev,
} }
int hda_set_stream_data_offset(struct snd_sof_dev *sdev, int hda_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset) size_t posn_offset)
{ {
struct snd_pcm_substream *substream = sps->substream;
struct hdac_stream *hstream = substream->runtime->private_data; struct hdac_stream *hstream = substream->runtime->private_data;
struct sof_intel_hda_stream *hda_stream; struct sof_intel_hda_stream *hda_stream;
......
...@@ -659,7 +659,7 @@ int hda_ipc_msg_data(struct snd_sof_dev *sdev, ...@@ -659,7 +659,7 @@ int hda_ipc_msg_data(struct snd_sof_dev *sdev,
struct snd_sof_pcm_stream *sps, struct snd_sof_pcm_stream *sps,
void *p, size_t sz); void *p, size_t sz);
int hda_set_stream_data_offset(struct snd_sof_dev *sdev, int hda_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset); size_t posn_offset);
/* /*
......
...@@ -129,7 +129,8 @@ static int sof_ipc3_pcm_hw_params(struct snd_soc_component *component, ...@@ -129,7 +129,8 @@ static int sof_ipc3_pcm_hw_params(struct snd_soc_component *component,
return ret; return ret;
} }
ret = snd_sof_set_stream_data_offset(sdev, substream, ipc_params_reply.posn_offset); ret = snd_sof_set_stream_data_offset(sdev, &spcm->stream[substream->stream],
ipc_params_reply.posn_offset);
if (ret < 0) { if (ret < 0) {
dev_err(component->dev, "%s: invalid stream data offset for PCM %d\n", dev_err(component->dev, "%s: invalid stream data offset for PCM %d\n",
__func__, spcm->pcm.pcm_id); __func__, spcm->pcm.pcm_id);
......
...@@ -480,11 +480,11 @@ static inline int snd_sof_ipc_msg_data(struct snd_sof_dev *sdev, ...@@ -480,11 +480,11 @@ static inline int snd_sof_ipc_msg_data(struct snd_sof_dev *sdev,
/* host side configuration of the stream's data offset in stream mailbox area */ /* host side configuration of the stream's data offset in stream mailbox area */
static inline int static inline int
snd_sof_set_stream_data_offset(struct snd_sof_dev *sdev, snd_sof_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset) size_t posn_offset)
{ {
if (sof_ops(sdev) && sof_ops(sdev)->set_stream_data_offset) if (sof_ops(sdev) && sof_ops(sdev)->set_stream_data_offset)
return sof_ops(sdev)->set_stream_data_offset(sdev, substream, return sof_ops(sdev)->set_stream_data_offset(sdev, sps,
posn_offset); posn_offset);
return 0; return 0;
......
...@@ -254,7 +254,7 @@ struct snd_sof_dsp_ops { ...@@ -254,7 +254,7 @@ struct snd_sof_dsp_ops {
/* host side configuration of the stream's data offset in stream mailbox area */ /* host side configuration of the stream's data offset in stream mailbox area */
int (*set_stream_data_offset)(struct snd_sof_dev *sdev, int (*set_stream_data_offset)(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset); /* optional */ size_t posn_offset); /* optional */
/* pre/post firmware run */ /* pre/post firmware run */
...@@ -766,7 +766,7 @@ int sof_ipc_msg_data(struct snd_sof_dev *sdev, ...@@ -766,7 +766,7 @@ int sof_ipc_msg_data(struct snd_sof_dev *sdev,
struct snd_sof_pcm_stream *sps, struct snd_sof_pcm_stream *sps,
void *p, size_t sz); void *p, size_t sz);
int sof_set_stream_data_offset(struct snd_sof_dev *sdev, int sof_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset); size_t posn_offset);
int sof_stream_pcm_open(struct snd_sof_dev *sdev, int sof_stream_pcm_open(struct snd_sof_dev *sdev,
......
...@@ -48,9 +48,10 @@ int sof_ipc_msg_data(struct snd_sof_dev *sdev, ...@@ -48,9 +48,10 @@ int sof_ipc_msg_data(struct snd_sof_dev *sdev,
EXPORT_SYMBOL(sof_ipc_msg_data); EXPORT_SYMBOL(sof_ipc_msg_data);
int sof_set_stream_data_offset(struct snd_sof_dev *sdev, int sof_set_stream_data_offset(struct snd_sof_dev *sdev,
struct snd_pcm_substream *substream, struct snd_sof_pcm_stream *sps,
size_t posn_offset) size_t posn_offset)
{ {
struct snd_pcm_substream *substream = sps->substream;
struct sof_stream *stream = substream->runtime->private_data; struct sof_stream *stream = substream->runtime->private_data;
/* check if offset is overflow or it is not aligned */ /* check if offset is overflow or it is not aligned */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment