[alsa-devel] [RFC][PATCH] ASoC: Add soc_remove_dai_links
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Fri Apr 8 07:50:44 CEST 2011
card->num_rtd should be 0 after soc_romve_dai_link
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
To Mark, Liam
I'm not sure that this is correct patch for ASoC.
But without this patch, below command doesn't work
ex) FSI-AK4642 case
# cd /sys/bus/platform/drivers/fsi-ak4642-audio
# echo sh_fsi2_a_ak4643.0 > unbind
# echo sh_fsi2_a_ak4643.0 > bind *1
*1
soc_new_pcm isn't called, and "aplay -l" doens't show fsi-ak4642.
snd_soc_instantiate_card return around /* bind comleted ? */
sound/soc/soc-core.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 4dda589..9cd0770 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1451,6 +1451,16 @@ static void soc_remove_dai_link(struct snd_soc_card *card, int num)
}
}
+static void soc_remove_dai_links(struct snd_soc_card *card)
+{
+ int i;
+
+ for (i = 0; i < card->num_rtd; i++)
+ soc_remove_dai_link(card, i);
+
+ card->num_rtd = 0;
+}
+
static void soc_set_name_prefix(struct snd_soc_card *card,
struct snd_soc_codec *codec)
{
@@ -1947,8 +1957,7 @@ probe_aux_dev_err:
soc_remove_aux_dev(card, i);
probe_dai_err:
- for (i = 0; i < card->num_links; i++)
- soc_remove_dai_link(card, i);
+ soc_remove_dai_links(card);
card_probe_error:
if (card->remove)
@@ -2010,8 +2019,7 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
soc_remove_aux_dev(card, i);
/* remove and free each DAI */
- for (i = 0; i < card->num_rtd; i++)
- soc_remove_dai_link(card, i);
+ soc_remove_dai_links(card);
soc_cleanup_card_debugfs(card);
--
1.7.1
More information about the Alsa-devel
mailing list