mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-12 05:48:39 +08:00
ASoC: soc-component: Add snd_soc_pcm_component_ack
Add snd_soc_pcm_component_ack back, which can be used to get an updated buffer pointer in the platform driver. On Asymmetric multiprocessor, this pointer can be sent to Cortex-M core for audio processing. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1615516725-4975-2-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3f994c2586
commit
8bdfc0455e
@ -146,6 +146,8 @@ struct snd_soc_component_driver {
|
||||
int (*mmap)(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream,
|
||||
struct vm_area_struct *vma);
|
||||
int (*ack)(struct snd_soc_component *component,
|
||||
struct snd_pcm_substream *substream);
|
||||
|
||||
const struct snd_compress_ops *compress_ops;
|
||||
|
||||
@ -498,5 +500,6 @@ int snd_soc_pcm_component_pm_runtime_get(struct snd_soc_pcm_runtime *rtd,
|
||||
void *stream);
|
||||
void snd_soc_pcm_component_pm_runtime_put(struct snd_soc_pcm_runtime *rtd,
|
||||
void *stream, int rollback);
|
||||
int snd_soc_pcm_component_ack(struct snd_pcm_substream *substream);
|
||||
|
||||
#endif /* __SOC_COMPONENT_H */
|
||||
|
@ -1212,3 +1212,17 @@ void snd_soc_pcm_component_pm_runtime_put(struct snd_soc_pcm_runtime *rtd,
|
||||
soc_component_mark_pop(component, stream, pm);
|
||||
}
|
||||
}
|
||||
|
||||
int snd_soc_pcm_component_ack(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
|
||||
struct snd_soc_component *component;
|
||||
int i;
|
||||
|
||||
/* FIXME: use 1st pointer */
|
||||
for_each_rtd_components(rtd, i, component)
|
||||
if (component->driver->ack)
|
||||
return component->driver->ack(component, substream);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2772,6 +2772,8 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
|
||||
rtd->ops.page = snd_soc_pcm_component_page;
|
||||
if (drv->mmap)
|
||||
rtd->ops.mmap = snd_soc_pcm_component_mmap;
|
||||
if (drv->ack)
|
||||
rtd->ops.ack = snd_soc_pcm_component_ack;
|
||||
}
|
||||
|
||||
if (playback)
|
||||
|
Loading…
Reference in New Issue
Block a user