[alsa-devel] [RFC/PATCH] ALSA: PCM - Add PCM creation API for ASoC dynamic PCMs.
tiwai at suse.de
Wed Feb 8 14:19:12 CET 2012
At Wed, 8 Feb 2012 11:55:37 +0000,
Liam Girdwood wrote:
> The new ASoC dynamic PCM core needs to create PCMs and substreams that are
> for use by internal ASoC drivers only and not visible to userspace for
> direct IO. These new PCMs are similar to regular PCMs expect they have no
> device nodes or procfs entries. The ASoC component drivers use them in exactly
> the same way as regular PCMs for PCM and DAI operations.
> The intention is that a dynamic PCM based driver will register both regular
> PCMs and dynamic PCMs. The regular PCMs will be used for all IO with userspace
> however the dynamic PCMs will be used by the driver to route digital audio
> through numerous back end DAI links (with potentially a DSP providing different
> hw_params, DAI formats based on the regular front end PCM params) to devices
> like CODECs, MODEMs, Bluetooth, FM, DMICs, etc
> This patch adds a new snd_pcm_new_dynamic() API call to create the dynamic PCM
> without device nodes or procfs. It also adds snd_pcm_new_stream_dynamic() and
> snd_pcm_dev_register_dynamic() which are used to create the dynamic PCM.
I don't think you need to copy all functions just for stripping some
features. Instead, add a new flag in snd_pcm indicating that it's
only for internal-use (or non-exposure, whatever), and set it in
snd_pcm_new(). Maybe make a static __snd_pcm_new() with an extra bool
flag and let snd_pcm_new() and snd_pcm_new_dynamic() call the function
with the appropriate flag value.
In snd_pcm_new_stream(), just skip unnecessary init parts when the pcm
flag is set. Ditto for snd_pcm_dev_register().
More information about the Alsa-devel