diff options
author | Liam Girdwood <lrg@ti.com> | 2012-02-08 20:33:31 +0000 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-09 09:20:22 +0100 |
commit | 945e5038455fef18e73914c149717878d78cb4c0 (patch) | |
tree | d3ea8e7c0bd087afda16ed6b7fa145eb8c00bb68 /include/sound | |
parent | 62aa2b537c6f5957afd98e29f96897419ed5ebab (diff) | |
download | op-kernel-dev-945e5038455fef18e73914c149717878d78cb4c0.zip op-kernel-dev-945e5038455fef18e73914c149717878d78cb4c0.tar.gz |
ALSA: PCM - Add PCM creation API for internal PCMs.
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 internal PCMs. The regular PCMs will be used for all IO with userspace
however the internal 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_internal() API call to create the internal PCM
without device nodes or procfs. It also adds adds a new internal flag to snd_pcm.
[fixed minor coding-style issues by tiwai]
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/pcm.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index 0cf91b2..1d58d79 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h @@ -454,6 +454,7 @@ struct snd_pcm { void *private_data; void (*private_free) (struct snd_pcm *pcm); struct device *dev; /* actual hw device this belongs to */ + bool internal; /* pcm is for internal use only */ #if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE) struct snd_pcm_oss oss; #endif @@ -475,6 +476,9 @@ extern const struct file_operations snd_pcm_f_ops[2]; int snd_pcm_new(struct snd_card *card, const char *id, int device, int playback_count, int capture_count, struct snd_pcm **rpcm); +int snd_pcm_new_internal(struct snd_card *card, const char *id, int device, + int playback_count, int capture_count, + struct snd_pcm **rpcm); int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count); int snd_pcm_notify(struct snd_pcm_notify *notify, int nfree); |