|
@@ -1948,6 +1948,36 @@ int snd_soc_add_controls(struct snd_soc_codec *codec,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(snd_soc_add_controls);
|
|
|
|
|
|
+/**
|
|
|
+ * snd_soc_add_platform_controls - add an array of controls to a platform.
|
|
|
+ * Convienience function to add a list of controls.
|
|
|
+ *
|
|
|
+ * @platform: platform to add controls to
|
|
|
+ * @controls: array of controls to add
|
|
|
+ * @num_controls: number of elements in the array
|
|
|
+ *
|
|
|
+ * Return 0 for success, else error.
|
|
|
+ */
|
|
|
+int snd_soc_add_platform_controls(struct snd_soc_platform *platform,
|
|
|
+ const struct snd_kcontrol_new *controls, int num_controls)
|
|
|
+{
|
|
|
+ struct snd_card *card = platform->card->snd_card;
|
|
|
+ int err, i;
|
|
|
+
|
|
|
+ for (i = 0; i < num_controls; i++) {
|
|
|
+ const struct snd_kcontrol_new *control = &controls[i];
|
|
|
+ err = snd_ctl_add(card, snd_soc_cnew(control, platform,
|
|
|
+ control->name, NULL));
|
|
|
+ if (err < 0) {
|
|
|
+ dev_err(platform->dev, "Failed to add %s %d\n",control->name, err);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(snd_soc_add_platform_controls);
|
|
|
+
|
|
|
/**
|
|
|
* snd_soc_info_enum_double - enumerated double mixer info callback
|
|
|
* @kcontrol: mixer control
|