diff options
author | Jorge Eduardo Candelaria <jorge.candelaria@ti.com> | 2010-12-10 21:45:19 -0500 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2010-12-14 15:31:55 -0500 |
commit | 96dc227c9086bc84ca23af70741b2a76e3dd08eb (patch) | |
tree | d90a98debb23b1a8270fcc3a48202cd02976d3c9 | |
parent | a2d2362edf9f068bdee7d0411e0603b322f8415d (diff) |
ASoC: sdp4430: Add Jack support
Use jack framework to enable detection for the headset microphone
and stereo output in the sdp4430.
Signed-off-by: Jorge Eduardo Candelaria <jorge.candelaria@ti.com>
Signed-off-by: David Anders <x0132446@ti.com>
Signed-off-by: Margarita Olaya Cabrera <magi.olaya@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r-- | sound/soc/omap/sdp4430.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c index 0c37c51313a8..189e03900637 100644 --- a/sound/soc/omap/sdp4430.c +++ b/sound/soc/omap/sdp4430.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <sound/core.h> | 24 | #include <sound/core.h> |
25 | #include <sound/pcm.h> | 25 | #include <sound/pcm.h> |
26 | #include <sound/soc.h> | 26 | #include <sound/soc.h> |
27 | #include <sound/jack.h> | ||
27 | 28 | ||
28 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
29 | #include <plat/hardware.h> | 30 | #include <plat/hardware.h> |
@@ -65,6 +66,21 @@ static struct snd_soc_ops sdp4430_ops = { | |||
65 | .hw_params = sdp4430_hw_params, | 66 | .hw_params = sdp4430_hw_params, |
66 | }; | 67 | }; |
67 | 68 | ||
69 | /* Headset jack */ | ||
70 | static struct snd_soc_jack hs_jack; | ||
71 | |||
72 | /*Headset jack detection DAPM pins */ | ||
73 | static struct snd_soc_jack_pin hs_jack_pins[] = { | ||
74 | { | ||
75 | .pin = "Headset Mic", | ||
76 | .mask = SND_JACK_MICROPHONE, | ||
77 | }, | ||
78 | { | ||
79 | .pin = "Headset Stereophone", | ||
80 | .mask = SND_JACK_HEADPHONE, | ||
81 | }, | ||
82 | }; | ||
83 | |||
68 | static int sdp4430_get_power_mode(struct snd_kcontrol *kcontrol, | 84 | static int sdp4430_get_power_mode(struct snd_kcontrol *kcontrol, |
69 | struct snd_ctl_elem_value *ucontrol) | 85 | struct snd_ctl_elem_value *ucontrol) |
70 | { | 86 | { |
@@ -160,6 +176,22 @@ static int sdp4430_twl6040_init(struct snd_soc_pcm_runtime *rtd) | |||
160 | snd_soc_dapm_enable_pin(dapm, "Headset Stereophone"); | 176 | snd_soc_dapm_enable_pin(dapm, "Headset Stereophone"); |
161 | 177 | ||
162 | ret = snd_soc_dapm_sync(dapm); | 178 | ret = snd_soc_dapm_sync(dapm); |
179 | if (ret) | ||
180 | return ret; | ||
181 | |||
182 | /* Headset jack detection */ | ||
183 | ret = snd_soc_jack_new(codec, "Headset Jack", | ||
184 | SND_JACK_HEADSET, &hs_jack); | ||
185 | if (ret) | ||
186 | return ret; | ||
187 | |||
188 | ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins), | ||
189 | hs_jack_pins); | ||
190 | |||
191 | if (machine_is_omap_4430sdp()) | ||
192 | twl6040_hs_jack_detect(codec, &hs_jack, SND_JACK_HEADSET); | ||
193 | else | ||
194 | snd_soc_jack_report(&hs_jack, SND_JACK_HEADSET, SND_JACK_HEADSET); | ||
163 | 195 | ||
164 | return ret; | 196 | return ret; |
165 | } | 197 | } |