qemu does not emulate it

Signed-off-by: Pali Rohár <pali.ro...@gmail.com>
---
 sound/soc/omap/rx51.c |   45 +++++++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 04896d6..a689021 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -310,25 +310,27 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime 
*rtd)
                return err;
        }
 
-       /* AV jack detection */
-       err = snd_soc_jack_new(codec, "AV Jack",
-                              SND_JACK_HEADSET | SND_JACK_VIDEOOUT,
-                              &rx51_av_jack);
-       if (err) {
-               dev_err(card->dev, "Failed to add AV Jack\n");
-               return err;
-       }
+       if (!IS_ERR(pdata->jack_detection_gpio)) {
+               /* AV jack detection */
+               err = snd_soc_jack_new(codec, "AV Jack",
+                                      SND_JACK_HEADSET | SND_JACK_VIDEOOUT,
+                                      &rx51_av_jack);
+               if (err) {
+                       dev_err(card->dev, "Failed to add AV Jack\n");
+                       return err;
+               }
 
-       /* prepare gpio for snd_soc_jack_add_gpios */
-       rx51_av_jack_gpios[0].gpio = desc_to_gpio(pdata->jack_detection_gpio);
-       devm_gpiod_put(card->dev, pdata->jack_detection_gpio);
+               /* prepare gpio for snd_soc_jack_add_gpios */
+               rx51_av_jack_gpios[0].gpio = 
desc_to_gpio(pdata->jack_detection_gpio);
+               devm_gpiod_put(card->dev, pdata->jack_detection_gpio);
 
-       err = snd_soc_jack_add_gpios(&rx51_av_jack,
-                                    ARRAY_SIZE(rx51_av_jack_gpios),
-                                    rx51_av_jack_gpios);
-       if (err) {
-               dev_err(card->dev, "Failed to add GPIOs\n");
-               return err;
+               err = snd_soc_jack_add_gpios(&rx51_av_jack,
+                                            ARRAY_SIZE(rx51_av_jack_gpios),
+                                            rx51_av_jack_gpios);
+               if (err) {
+                       dev_err(card->dev, "Failed to add GPIOs\n");
+                       return err;
+               }
        }
 
        return err;
@@ -336,8 +338,11 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 
 static int rx51_card_remove(struct snd_soc_card *card)
 {
-       snd_soc_jack_free_gpios(&rx51_av_jack, ARRAY_SIZE(rx51_av_jack_gpios),
-                               rx51_av_jack_gpios);
+       struct rx51_audio_pdata *pdata = snd_soc_card_get_drvdata(card);
+
+       if (!IS_ERR(pdata->jack_detection_gpio))
+               snd_soc_jack_free_gpios(&rx51_av_jack, 
ARRAY_SIZE(rx51_av_jack_gpios),
+                                       rx51_av_jack_gpios);
 
        return 0;
 }
@@ -470,8 +475,8 @@ static int rx51_soc_probe(struct platform_device *pdev)
        pdata->jack_detection_gpio = devm_gpiod_get(card->dev,
                                                    "jack-detection");
        if (IS_ERR(pdata->jack_detection_gpio)) {
+               /* Do not fail, qemu does not emulate jack detection gpio */
                dev_err(card->dev, "could not get jack detection gpio\n");
-               return PTR_ERR(pdata->jack_detection_gpio);
        }
 
        pdata->eci_sw_gpio = devm_gpiod_get(card->dev, "eci-switch");
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to