ASoC: OMAP: N810: Add more jack functions
Add functions "Headset" and "Mic" to the control "Jack Function" for activating and de-activating codec input pin LINE1L which is connected to the mic pin of 4-pole Nokia AV connecter. Note there is no mic bias voltage management here since bias is coming from Nokia ASIC and driver for it is not in mainline. Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
13b9d2ab59
commit
f8d5fc924b
@ -40,6 +40,13 @@
|
|||||||
#define N810_HEADSET_AMP_GPIO 10
|
#define N810_HEADSET_AMP_GPIO 10
|
||||||
#define N810_SPEAKER_AMP_GPIO 101
|
#define N810_SPEAKER_AMP_GPIO 101
|
||||||
|
|
||||||
|
enum {
|
||||||
|
N810_JACK_DISABLED,
|
||||||
|
N810_JACK_HP,
|
||||||
|
N810_JACK_HS,
|
||||||
|
N810_JACK_MIC,
|
||||||
|
};
|
||||||
|
|
||||||
static struct clk *sys_clkout2;
|
static struct clk *sys_clkout2;
|
||||||
static struct clk *sys_clkout2_src;
|
static struct clk *sys_clkout2_src;
|
||||||
static struct clk *func96m_clk;
|
static struct clk *func96m_clk;
|
||||||
@ -50,15 +57,32 @@ static int n810_dmic_func;
|
|||||||
|
|
||||||
static void n810_ext_control(struct snd_soc_codec *codec)
|
static void n810_ext_control(struct snd_soc_codec *codec)
|
||||||
{
|
{
|
||||||
|
int hp = 0, line1l = 0;
|
||||||
|
|
||||||
|
switch (n810_jack_func) {
|
||||||
|
case N810_JACK_HS:
|
||||||
|
line1l = 1;
|
||||||
|
case N810_JACK_HP:
|
||||||
|
hp = 1;
|
||||||
|
break;
|
||||||
|
case N810_JACK_MIC:
|
||||||
|
line1l = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (n810_spk_func)
|
if (n810_spk_func)
|
||||||
snd_soc_dapm_enable_pin(codec, "Ext Spk");
|
snd_soc_dapm_enable_pin(codec, "Ext Spk");
|
||||||
else
|
else
|
||||||
snd_soc_dapm_disable_pin(codec, "Ext Spk");
|
snd_soc_dapm_disable_pin(codec, "Ext Spk");
|
||||||
|
|
||||||
if (n810_jack_func)
|
if (hp)
|
||||||
snd_soc_dapm_enable_pin(codec, "Headphone Jack");
|
snd_soc_dapm_enable_pin(codec, "Headphone Jack");
|
||||||
else
|
else
|
||||||
snd_soc_dapm_disable_pin(codec, "Headphone Jack");
|
snd_soc_dapm_disable_pin(codec, "Headphone Jack");
|
||||||
|
if (line1l)
|
||||||
|
snd_soc_dapm_enable_pin(codec, "LINE1L");
|
||||||
|
else
|
||||||
|
snd_soc_dapm_disable_pin(codec, "LINE1L");
|
||||||
|
|
||||||
if (n810_dmic_func)
|
if (n810_dmic_func)
|
||||||
snd_soc_dapm_enable_pin(codec, "DMic");
|
snd_soc_dapm_enable_pin(codec, "DMic");
|
||||||
@ -229,7 +253,7 @@ static const struct snd_soc_dapm_route audio_map[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *spk_function[] = {"Off", "On"};
|
static const char *spk_function[] = {"Off", "On"};
|
||||||
static const char *jack_function[] = {"Off", "Headphone"};
|
static const char *jack_function[] = {"Off", "Headphone", "Headset", "Mic"};
|
||||||
static const char *input_function[] = {"ADC", "Digital Mic"};
|
static const char *input_function[] = {"ADC", "Digital Mic"};
|
||||||
static const struct soc_enum n810_enum[] = {
|
static const struct soc_enum n810_enum[] = {
|
||||||
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(spk_function), spk_function),
|
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(spk_function), spk_function),
|
||||||
|
Loading…
Reference in New Issue
Block a user