ASoC: tegra: Read and use the GPIO flags of the headphone detect
[firefly-linux-kernel-4.4.55.git] / sound / soc / tegra / tegra_rt5640.c
index a6898831fb9f3b0011ddd0c3341901ffe9f1d043..4ebe3871e61024e7afe4b36d4cb355597642d625 100644 (file)
@@ -44,6 +44,7 @@
 struct tegra_rt5640 {
        struct tegra_asoc_utils_data util_data;
        int gpio_hp_det;
+       enum of_gpio_flags gpio_hp_det_flags;
 };
 
 static int tegra_rt5640_asoc_hw_params(struct snd_pcm_substream *substream,
@@ -119,6 +120,8 @@ static int tegra_rt5640_asoc_init(struct snd_soc_pcm_runtime *rtd)
 
        if (gpio_is_valid(machine->gpio_hp_det)) {
                tegra_rt5640_hp_jack_gpio.gpio = machine->gpio_hp_det;
+               tegra_rt5640_hp_jack_gpio.invert =
+                       !!(machine->gpio_hp_det_flags & OF_GPIO_ACTIVE_LOW);
                snd_soc_jack_add_gpios(&tegra_rt5640_hp_jack,
                                                1,
                                                &tegra_rt5640_hp_jack_gpio);
@@ -180,7 +183,8 @@ static int tegra_rt5640_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, card);
        snd_soc_card_set_drvdata(card, machine);
 
-       machine->gpio_hp_det = of_get_named_gpio(np, "nvidia,hp-det-gpios", 0);
+       machine->gpio_hp_det = of_get_named_gpio_flags(
+               np, "nvidia,hp-det-gpios", 0, &machine->gpio_hp_det_flags);
        if (machine->gpio_hp_det == -EPROBE_DEFER)
                return -EPROBE_DEFER;