diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2014-08-19 09:51:26 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-08-19 11:59:47 -0400 |
commit | e60cd14f0bf6c004cd7032a24a036ba32d56e08a (patch) | |
tree | 6b22a2a79c39990dca143a4ac5237f28f2f31379 | |
parent | ffbd7dd72bd3ad9bcae9190788c858e57f1e8e4e (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.c | 34 |
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 | ||
1024 | static void soc_remove_codec_dai(struct snd_soc_dai *codec_dai, int order) | 1024 | static 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 | ||
1041 | static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order) | 1041 | static 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 | ||
1073 | static void soc_remove_link_components(struct snd_soc_card *card, int num, | 1061 | static void soc_remove_link_components(struct snd_soc_card *card, int num, |