ALSA: PCM: User contol API implementation
Introduced a new helper function snd_pcm_add_usr_ctls() to
create control elements representing the user control for each
PCM (sub)stream
Change-Id: I9f69470ff2c5d6df8d1fdc2e1c2caf198076076e
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index df5ca27..bb5ba20 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -519,6 +519,7 @@
#endif
struct snd_kcontrol *chmap_kctl; /* channel-mapping controls */
struct snd_kcontrol *vol_kctl; /* volume controls */
+ struct snd_kcontrol *usr_kctl; /* user controls */
struct device dev;
};
@@ -1437,6 +1438,30 @@
unsigned long private_value,
struct snd_pcm_volume **info_ret);
+/*
+ * PCM User control API
+ */
+/* array element of usr elem */
+struct snd_pcm_usr_elem {
+ int val[128];
+};
+
+/* pp information; retrieved via snd_kcontrol_chip() */
+struct snd_pcm_usr {
+ struct snd_pcm *pcm; /* assigned PCM instance */
+ int stream; /* PLAYBACK or CAPTURE */
+ struct snd_kcontrol *kctl;
+ const struct snd_pcm_usr_elem *usr;
+ int max_length;
+ void *private_data; /* optional: private data pointer */
+};
+
+int snd_pcm_add_usr_ctls(struct snd_pcm *pcm, int stream,
+ const struct snd_pcm_usr_elem *usr,
+ int max_length, int max_control_str_len,
+ unsigned long private_value,
+ struct snd_pcm_usr **info_ret);
+
/* printk helpers */
#define pcm_err(pcm, fmt, args...) \
dev_err((pcm)->card->dev, fmt, ##args)