OSDN Git Service

ASoC: free jack GPIOs before the sound card is freed
[uclinux-h8/linux.git] / sound / soc / pxa / hx4700.c
index dcc9b04..6b81aca 100644 (file)
@@ -152,6 +152,13 @@ static int hx4700_ak4641_init(struct snd_soc_pcm_runtime *rtd)
        return err;
 }
 
+static int hx4700_card_remove(struct snd_soc_pcm_runtime *rtd)
+{
+       snd_soc_jack_free_gpios(&hs_jack, 1, &hs_jack_gpio);
+
+       return 0;
+}
+
 /* hx4700 digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link hx4700_dai = {
        .name = "ak4641",
@@ -170,6 +177,7 @@ static struct snd_soc_dai_link hx4700_dai = {
 static struct snd_soc_card snd_soc_card_hx4700 = {
        .name                   = "iPAQ hx4700",
        .owner                  = THIS_MODULE,
+       .remove                 = hx4700_card_remove,
        .dai_link               = &hx4700_dai,
        .num_links              = 1,
        .dapm_widgets           = hx4700_dapm_widgets,
@@ -206,7 +214,6 @@ static int hx4700_audio_probe(struct platform_device *pdev)
 
 static int hx4700_audio_remove(struct platform_device *pdev)
 {
-       snd_soc_jack_free_gpios(&hs_jack, 1, &hs_jack_gpio);
        snd_soc_unregister_card(&snd_soc_card_hx4700);
 
        gpio_set_value(GPIO92_HX4700_HP_DRIVER, 0);