aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2014-08-19 09:51:26 -0400
committerMark Brown <broonie@linaro.org>2014-08-19 11:59:47 -0400
commite60cd14f0bf6c004cd7032a24a036ba32d56e08a (patch)
tree6b22a2a79c39990dca143a4ac5237f28f2f31379
parentffbd7dd72bd3ad9bcae9190788c858e57f1e8e4e (diff)
ASoC: Consolidate CPU and CODEC DAI removal
CPU and CODEC DAI works exactly the same way. There is already a helper function for CODEC DAI removal, use that one as well for CPU DAI removal. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--sound/soc/soc-core.c34
1 files changed, 11 insertions, 23 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 4dc2876c06de..5f6f97874ca2 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1021,28 +1021,27 @@ static void soc_remove_component(struct snd_soc_component *component)
1021 module_put(component->dev->driver->owner); 1021 module_put(component->dev->driver->owner);
1022} 1022}
1023 1023
1024static void soc_remove_codec_dai(struct snd_soc_dai *codec_dai, int order) 1024static void soc_remove_dai(struct snd_soc_dai *dai, int order)
1025{ 1025{
1026 int err; 1026 int err;
1027 1027
1028 if (codec_dai && codec_dai->probed && 1028 if (dai && dai->probed &&
1029 codec_dai->driver->remove_order == order) { 1029 dai->driver->remove_order == order) {
1030 if (codec_dai->driver->remove) { 1030 if (dai->driver->remove) {
1031 err = codec_dai->driver->remove(codec_dai); 1031 err = dai->driver->remove(dai);
1032 if (err < 0) 1032 if (err < 0)
1033 dev_err(codec_dai->dev, 1033 dev_err(dai->dev,
1034 "ASoC: failed to remove %s: %d\n", 1034 "ASoC: failed to remove %s: %d\n",
1035 codec_dai->name, err); 1035 dai->name, err);
1036 } 1036 }
1037 codec_dai->probed = 0; 1037 dai->probed = 0;
1038 } 1038 }
1039} 1039}
1040 1040
1041static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order) 1041static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order)
1042{ 1042{
1043 struct snd_soc_pcm_runtime *rtd = &card->rtd[num]; 1043 struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
1044 struct snd_soc_dai *cpu_dai = rtd->cpu_dai; 1044 int i;
1045 int i, err;
1046 1045
1047 /* unregister the rtd device */ 1046 /* unregister the rtd device */
1048 if (rtd->dev_registered) { 1047 if (rtd->dev_registered) {
@@ -1054,20 +1053,9 @@ static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order)
1054 1053
1055 /* remove the CODEC DAI */ 1054 /* remove the CODEC DAI */
1056 for (i = 0; i < rtd->num_codecs; i++) 1055 for (i = 0; i < rtd->num_codecs; i++)
1057 soc_remove_codec_dai(rtd->codec_dais[i], order); 1056 soc_remove_dai(rtd->codec_dais[i], order);
1058 1057
1059 /* remove the cpu_dai */ 1058 soc_remove_dai(rtd->cpu_dai, order);
1060 if (cpu_dai && cpu_dai->probed &&
1061 cpu_dai->driver->remove_order == order) {
1062 if (cpu_dai->driver->remove) {
1063 err = cpu_dai->driver->remove(cpu_dai);
1064 if (err < 0)
1065 dev_err(cpu_dai->dev,
1066 "ASoC: failed to remove %s: %d\n",
1067 cpu_dai->name, err);
1068 }
1069 cpu_dai->probed = 0;
1070 }
1071} 1059}
1072 1060
1073static void soc_remove_link_components(struct snd_soc_card *card, int num, 1061static void soc_remove_link_components(struct snd_soc_card *card, int num,