diff options
| author | Vinod Koul <vinod.koul@intel.com> | 2011-01-14 19:22:48 +0530 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-01-17 13:50:08 +0000 | 
| commit | 70a7ca34dbdcc6f0ed332baf2b308bab2871424a (patch) | |
| tree | 9f5effa903362d8b717bfd944551cd27e66ded4a | |
| parent | 62ffac4d70ed996d303da0ac8e32c89b9810115c (diff) | |
| download | olio-linux-3.10-70a7ca34dbdcc6f0ed332baf2b308bab2871424a.tar.xz olio-linux-3.10-70a7ca34dbdcc6f0ed332baf2b308bab2871424a.zip  | |
ASoC: soc core allow machine driver to register the card
The machine driver can't register the card directly and need to do this thru
soc-audio device creation
This patch allows the register and unregister card to be directly called by
machine drivers
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Harsha Priya <priya.harsha@intel.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| -rw-r--r-- | include/sound/soc.h | 2 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 21 | 
2 files changed, 13 insertions, 10 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index 541ddfaa124..9952254974b 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -258,6 +258,8 @@ enum snd_soc_compress_type {  	SND_SOC_RBTREE_COMPRESSION  }; +int snd_soc_register_card(struct snd_soc_card *card); +int snd_soc_unregister_card(struct snd_soc_card *card);  int snd_soc_register_platform(struct device *dev,  		struct snd_soc_platform_driver *platform_drv);  void snd_soc_unregister_platform(struct device *dev); diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 83057127b2f..69117b686fd 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -58,8 +58,6 @@ static LIST_HEAD(dai_list);  static LIST_HEAD(platform_list);  static LIST_HEAD(codec_list); -static int snd_soc_register_card(struct snd_soc_card *card); -static int snd_soc_unregister_card(struct snd_soc_card *card);  static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num);  /* @@ -1870,6 +1868,13 @@ static int soc_probe(struct platform_device *pdev)  	struct snd_soc_card *card = platform_get_drvdata(pdev);  	int ret = 0; +	/* +	 * no card, so machine driver should be registering card +	 * we should not be here in that case so ret error +	 */ +	if (!card) +		return -EINVAL; +  	/* Bodge while we unpick instantiation */  	card->dev = &pdev->dev;  	snd_soc_initialize_card_lists(card); @@ -3105,11 +3110,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_digital_mute);   *   * @card: Card to register   * - * Note that currently this is an internal only function: it will be - * exposed to machine drivers after further backporting of ASoC v2 - * registration APIs.   */ -static int snd_soc_register_card(struct snd_soc_card *card) +int snd_soc_register_card(struct snd_soc_card *card)  {  	int i; @@ -3141,17 +3143,15 @@ static int snd_soc_register_card(struct snd_soc_card *card)  	return 0;  } +EXPORT_SYMBOL_GPL(snd_soc_register_card);  /**   * snd_soc_unregister_card - Unregister a card with the ASoC core   *   * @card: Card to unregister   * - * Note that currently this is an internal only function: it will be - * exposed to machine drivers after further backporting of ASoC v2 - * registration APIs.   */ -static int snd_soc_unregister_card(struct snd_soc_card *card) +int snd_soc_unregister_card(struct snd_soc_card *card)  {  	if (card->instantiated)  		soc_cleanup_card_resources(card); @@ -3162,6 +3162,7 @@ static int snd_soc_unregister_card(struct snd_soc_card *card)  	return 0;  } +EXPORT_SYMBOL_GPL(snd_soc_unregister_card);  /*   * Simplify DAI link configuration by removing ".-1" from device names  |