ASoC: core - Add convenience register for platform kcontrol and DAPM
Allow platform probe to register platform kcontrols and DAPM just like the CODEC probe(). Signed-off-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
b795064137
commit
cb2cf612fb
2 changed files with 19 additions and 0 deletions
|
@ -651,6 +651,14 @@ struct snd_soc_platform_driver {
|
||||||
int (*pcm_new)(struct snd_soc_pcm_runtime *);
|
int (*pcm_new)(struct snd_soc_pcm_runtime *);
|
||||||
void (*pcm_free)(struct snd_pcm *);
|
void (*pcm_free)(struct snd_pcm *);
|
||||||
|
|
||||||
|
/* Default control and setup, added after probe() is run */
|
||||||
|
const struct snd_kcontrol_new *controls;
|
||||||
|
int num_controls;
|
||||||
|
const struct snd_soc_dapm_widget *dapm_widgets;
|
||||||
|
int num_dapm_widgets;
|
||||||
|
const struct snd_soc_dapm_route *dapm_routes;
|
||||||
|
int num_dapm_routes;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For platform caused delay reporting.
|
* For platform caused delay reporting.
|
||||||
* Optional.
|
* Optional.
|
||||||
|
|
|
@ -998,6 +998,10 @@ static int soc_probe_platform(struct snd_soc_card *card,
|
||||||
if (!try_module_get(platform->dev->driver->owner))
|
if (!try_module_get(platform->dev->driver->owner))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (driver->dapm_widgets)
|
||||||
|
snd_soc_dapm_new_controls(&platform->dapm,
|
||||||
|
driver->dapm_widgets, driver->num_dapm_widgets);
|
||||||
|
|
||||||
if (driver->probe) {
|
if (driver->probe) {
|
||||||
ret = driver->probe(platform);
|
ret = driver->probe(platform);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -1008,6 +1012,13 @@ static int soc_probe_platform(struct snd_soc_card *card,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (driver->controls)
|
||||||
|
snd_soc_add_platform_controls(platform, driver->controls,
|
||||||
|
driver->num_controls);
|
||||||
|
if (driver->dapm_routes)
|
||||||
|
snd_soc_dapm_add_routes(&platform->dapm, driver->dapm_routes,
|
||||||
|
driver->num_dapm_routes);
|
||||||
|
|
||||||
/* mark platform as probed and add to card platform list */
|
/* mark platform as probed and add to card platform list */
|
||||||
platform->probed = 1;
|
platform->probed = 1;
|
||||||
list_add(&platform->card_list, &card->platform_dev_list);
|
list_add(&platform->card_list, &card->platform_dev_list);
|
||||||
|
|
Loading…
Reference in a new issue