Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7d3e403 authored by Stephen Warren's avatar Stephen Warren Committed by Mark Brown
Browse files

ASoC: Tegra: Harmony: Add headphone jack detection

parent 46fdaa3b
Loading
Loading
Loading
Loading
+29 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@
#include <mach/harmony_audio.h>

#include <sound/core.h>
#include <sound/jack.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
@@ -123,6 +124,24 @@ static struct snd_soc_ops harmony_asoc_ops = {
	.hw_params = harmony_asoc_hw_params,
};

static struct snd_soc_jack harmony_hp_jack;

static struct snd_soc_jack_pin harmony_hp_jack_pins[] = {
	{
		.pin = "Headphone Jack",
		.mask = SND_JACK_HEADPHONE,
	},
};

static struct snd_soc_jack_gpio harmony_hp_jack_gpios[] = {
	{
		.name = "headphone detect",
		.report = SND_JACK_HEADPHONE,
		.debounce_time = 150,
		.invert = 1,
	}
};

static int harmony_event_int_spk(struct snd_soc_dapm_widget *w,
					struct snd_kcontrol *k, int event)
{
@@ -178,11 +197,20 @@ static int harmony_asoc_init(struct snd_soc_pcm_runtime *rtd)
	snd_soc_dapm_add_routes(dapm, harmony_audio_map,
				ARRAY_SIZE(harmony_audio_map));

	snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
	snd_soc_dapm_enable_pin(dapm, "Int Spk");
	snd_soc_dapm_enable_pin(dapm, "Mic Jack");
	snd_soc_dapm_sync(dapm);

	harmony_hp_jack_gpios[0].gpio = pdata->gpio_hp_det;
	snd_soc_jack_new(codec, "Headphone Jack", SND_JACK_HEADPHONE,
			 &harmony_hp_jack);
	snd_soc_jack_add_pins(&harmony_hp_jack,
			      ARRAY_SIZE(harmony_hp_jack_pins),
			      harmony_hp_jack_pins);
	snd_soc_jack_add_gpios(&harmony_hp_jack,
			       ARRAY_SIZE(harmony_hp_jack_gpios),
			       harmony_hp_jack_gpios);

	return 0;
}