]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00209529 WM8962: registry detect pin handler more late
authorGary Zhang <b13634@freescale.com>
Wed, 16 May 2012 09:32:13 +0000 (17:32 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:34:38 +0000 (08:34 +0200)
move hp/mic detect pin handler from imx_wm8962_probe()
to imx_wm8962_init().

Signed-off-by: Gary Zhang <b13634@freescale.com>
sound/soc/imx/imx-wm8962.c

index 74950ad798612c3f6862f18b97f79d6420fa90f9..9eff86a229c59eb5d036f839c9f0ed438cd5343f 100644 (file)
@@ -305,6 +305,7 @@ static int imx_wm8962_init(struct snd_soc_pcm_runtime *rtd)
        struct imx_priv *priv = &card_priv;
        struct platform_device *pdev = priv->pdev;
        struct mxc_audio_platform_data *plat = pdev->dev.platform_data;
+       int ret = 0;
 
        gcodec = rtd->codec;
 
@@ -320,7 +321,43 @@ static int imx_wm8962_init(struct snd_soc_pcm_runtime *rtd)
 
        snd_soc_dapm_sync(&codec->dapm);
 
+       if (plat->hp_gpio != -1) {
+                       priv->hp_irq = gpio_to_irq(plat->hp_gpio);
+
+                       ret = request_irq(priv->hp_irq,
+                                               imx_headphone_detect_handler,
+                                               IRQ_TYPE_EDGE_BOTH, pdev->name, priv);
+
+                       if (ret < 0) {
+                               ret = -EINVAL;
+                               return ret;
+                       }
+
+                       ret = driver_create_file(pdev->dev.driver,
+                                                       &driver_attr_headphone);
+                       if (ret < 0) {
+                               ret = -EINVAL;
+                               return ret;
+                       }
+               }
+
        if (plat->mic_gpio != -1) {
+               priv->amic_irq = gpio_to_irq(plat->mic_gpio);
+
+               ret = request_irq(priv->amic_irq,
+                                       imx_amic_detect_handler,
+                                       IRQ_TYPE_EDGE_BOTH, pdev->name, priv);
+
+               if (ret < 0) {
+                       ret = -EINVAL;
+                       return ret;
+               }
+
+               ret = driver_create_file(pdev->dev.driver, &driver_attr_amic);
+               if (ret < 0) {
+                       ret = -EINVAL;
+                       return ret;
+               }
 
                priv->amic_status = gpio_get_value(plat->mic_gpio);
 
@@ -406,43 +443,6 @@ static int __devinit imx_wm8962_probe(struct platform_device *pdev)
        }
 
        priv->sysclk = plat->sysclk;
-       priv->hp_irq = gpio_to_irq(plat->hp_gpio);
-       priv->amic_irq = gpio_to_irq(plat->mic_gpio);
-
-       if (plat->hp_gpio != -1) {
-               ret = request_irq(priv->hp_irq,
-                                       imx_headphone_detect_handler,
-                                       IRQ_TYPE_EDGE_BOTH, pdev->name, priv);
-
-               if (ret < 0) {
-                       ret = -EINVAL;
-                       return ret;
-               }
-
-               ret = driver_create_file(pdev->dev.driver,
-                                               &driver_attr_headphone);
-               if (ret < 0) {
-                       ret = -EINVAL;
-                       return ret;
-               }
-       }
-
-       if (plat->mic_gpio != -1) {
-               ret = request_irq(priv->amic_irq,
-                                       imx_amic_detect_handler,
-                                       IRQ_TYPE_EDGE_BOTH, pdev->name, priv);
-
-               if (ret < 0) {
-                       ret = -EINVAL;
-                       return ret;
-               }
-
-               ret = driver_create_file(pdev->dev.driver, &driver_attr_amic);
-               if (ret < 0) {
-                       ret = -EINVAL;
-                       return ret;
-               }
-       }
 
        return ret;
 }