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: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
8a27bd9a33
commit
a491a5c84f
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue