Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a491a5c8 authored by Liam Girdwood's avatar Liam Girdwood Committed by Mark Brown
Browse files

ASoC: core - Add API call to register platform kcontrols.



In preparation for Dynamic PCM (AKA DSP) support.

Allow platform drivers to register kcontrols.

Signed-off-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 8a27bd9a
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -368,6 +368,8 @@ struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
				  const char *prefix);
				  const char *prefix);
int snd_soc_add_controls(struct snd_soc_codec *codec,
int snd_soc_add_controls(struct snd_soc_codec *codec,
	const struct snd_kcontrol_new *controls, int num_controls);
	const struct snd_kcontrol_new *controls, int num_controls);
int snd_soc_add_platform_controls(struct snd_soc_platform *platform,
	const struct snd_kcontrol_new *controls, int num_controls);
int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
	struct snd_ctl_elem_info *uinfo);
	struct snd_ctl_elem_info *uinfo);
int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
+30 −0
Original line number Original line Diff line number Diff line
@@ -1948,6 +1948,36 @@ int snd_soc_add_controls(struct snd_soc_codec *codec,
}
}
EXPORT_SYMBOL_GPL(snd_soc_add_controls);
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
 * snd_soc_info_enum_double - enumerated double mixer info callback
 * @kcontrol: mixer control
 * @kcontrol: mixer control