From: 宋秀杰 Date: Tue, 9 Oct 2012 10:37:39 +0000 (+0800) Subject: phonepad: rt3261 add HDMI codec_set_spk function. X-Git-Tag: firefly_0821_release~8464 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ef39e638be47f753b53cf8132cac20ca2b9b6b64;p=firefly-linux-kernel-4.4.55.git phonepad: rt3261 add HDMI codec_set_spk function. --- diff --git a/sound/soc/codecs/rt3261.c b/sound/soc/codecs/rt3261.c index 6c68e62669ed..a04fc87ae993 100644 --- a/sound/soc/codecs/rt3261.c +++ b/sound/soc/codecs/rt3261.c @@ -484,6 +484,29 @@ static int rt3261_readable_register( } } +void codec_set_spk(bool on) +{ + + struct snd_soc_codec *codec = rt3261_codec; + DBG("%s: %d\n", __func__, on); + + if(!codec) + return; + + if(on){ + DBG("snd_soc_dapm_enable_pin\n"); + snd_soc_dapm_enable_pin(&codec->dapm, "Headphone Jack"); + snd_soc_dapm_enable_pin(&codec->dapm, "Ext Spk"); + }else{ + DBG("snd_soc_dapm_disable_pin\n"); + snd_soc_dapm_disable_pin(&codec->dapm, "Headphone Jack"); + snd_soc_dapm_disable_pin(&codec->dapm, "Ext Spk"); + } + snd_soc_dapm_sync(&codec->dapm); +} + + + /** * rt3261_headset_mic_detect - Detect headset. * @codec: SoC audio codec device. diff --git a/sound/soc/codecs/rt3261.h b/sound/soc/codecs/rt3261.h index 2b798302a43e..2efcf0eea722 100644 --- a/sound/soc/codecs/rt3261.h +++ b/sound/soc/codecs/rt3261.h @@ -2071,6 +2071,8 @@ enum { #define RT3261_HEADSET_DET BIT(1) #define RT3261_HEADPHO_DET BIT(2) +void codec_set_spk(bool on); + int rt3261_headset_mic_detect(int jack_insert); /* System Clock Source */ diff --git a/sound/soc/rk29/rk29_rt3261.c b/sound/soc/rk29/rk29_rt3261.c index 947ff19097fb..c96d7b8c23d2 100644 --- a/sound/soc/rk29/rk29_rt3261.c +++ b/sound/soc/rk29/rk29_rt3261.c @@ -172,6 +172,8 @@ static int rt3261_voice_hw_params(struct snd_pcm_substream *substream, static const struct snd_soc_dapm_widget rt3261_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("Headset Jack", NULL), + SND_SOC_DAPM_SPK("Ext Spk", NULL), + SND_SOC_DAPM_HP("Headphone Jack", NULL), }; static const struct snd_soc_dapm_route audio_map[]={ @@ -183,11 +185,21 @@ static const struct snd_soc_dapm_route audio_map[]={ // HP MIC {"micbias1", NULL, "Headset Jack"}, {"MIC3", NULL, "micbias1"}, + + {"Ext Spk", NULL, "SPOLP"}, + {"Ext Spk", NULL, "SPOLN"}, + {"Ext Spk", NULL, "SPORP"}, + {"Ext Spk", NULL, "SPORN"}, + + {"Headphone Jack", NULL, "HPOL"}, + {"Headphone Jack", NULL, "HPOR"}, } ; static const struct snd_kcontrol_new rk_controls[] = { SOC_DAPM_PIN_SWITCH("Mic Jack"), SOC_DAPM_PIN_SWITCH("Headset Jack"), + SOC_DAPM_PIN_SWITCH("Ext Spk"), + SOC_DAPM_PIN_SWITCH("Headphone Jack"), }; /* @@ -211,6 +223,8 @@ static int rk29_rt3261_init(struct snd_soc_pcm_runtime *rtd) snd_soc_dapm_enable_pin(dapm, "Mic Jack"); snd_soc_dapm_enable_pin(dapm, "Headset Jack"); + snd_soc_dapm_enable_pin(dapm, "Ext Spk"); + snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); snd_soc_dapm_sync(dapm); return 0;