From 043f6d317f0423b6c934610cd9b820dd851b8cc4 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Thu, 18 Mar 2010 08:23:33 +0100 Subject: [PATCH] --- yaml --- r: 193364 b: refs/heads/master c: b2dfa62c525fbe4d89790b6fa90af7c3f1c052ae h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/soc/soc-core.c | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 463762552b44..1d15dca3326c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fd23b7dee5e4d369f620979cb120f53629389355 +refs/heads/master: b2dfa62c525fbe4d89790b6fa90af7c3f1c052ae diff --git a/trunk/sound/soc/soc-core.c b/trunk/sound/soc/soc-core.c index eb73aab78b94..1ff553bbc063 100644 --- a/trunk/sound/soc/soc-core.c +++ b/trunk/sound/soc/soc-core.c @@ -1283,26 +1283,25 @@ static int soc_remove(struct platform_device *pdev) struct snd_soc_platform *platform = card->platform; struct snd_soc_codec_device *codec_dev = socdev->codec_dev; - if (!card->instantiated) - return 0; + if (card->instantiated) { + run_delayed_work(&card->delayed_work); - run_delayed_work(&card->delayed_work); + if (platform->remove) + platform->remove(pdev); - if (platform->remove) - platform->remove(pdev); + if (codec_dev->remove) + codec_dev->remove(pdev); - if (codec_dev->remove) - codec_dev->remove(pdev); + for (i = 0; i < card->num_links; i++) { + struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai; + if (cpu_dai->remove) + cpu_dai->remove(pdev, cpu_dai); + } - for (i = 0; i < card->num_links; i++) { - struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai; - if (cpu_dai->remove) - cpu_dai->remove(pdev, cpu_dai); + if (card->remove) + card->remove(pdev); } - if (card->remove) - card->remove(pdev); - snd_soc_unregister_card(card); return 0;