phonepad: rt3261 add HDMI codec_set_spk function.
author宋秀杰 <sxj@rock-chips.com>
Tue, 9 Oct 2012 10:37:39 +0000 (18:37 +0800)
committer宋秀杰 <sxj@rock-chips.com>
Tue, 9 Oct 2012 10:39:45 +0000 (18:39 +0800)
sound/soc/codecs/rt3261.c
sound/soc/codecs/rt3261.h
sound/soc/rk29/rk29_rt3261.c

index 6c68e62669ed14a06b53bae4ba3d8dce6891e5d6..a04fc87ae993d59d48a150e689c5c5c163b414cc 100644 (file)
@@ -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.
index 2b798302a43e35b915380fdcfc657bd9bcb05135..2efcf0eea722d26b5fecd6600ef3d877a4617811 100644 (file)
@@ -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 */
index 947ff19097fb522d2ab018caf66a066d6e5249de..c96d7b8c23d2ac8ffac225e069a59589f1ab4945 100644 (file)
@@ -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[] = {\r
        SND_SOC_DAPM_MIC("Mic Jack", NULL),\r
        SND_SOC_DAPM_MIC("Headset Jack", NULL), \r
+       SND_SOC_DAPM_SPK("Ext Spk", NULL),\r
+       SND_SOC_DAPM_HP("Headphone Jack", NULL),\r
 };\r
 \r
 static const struct snd_soc_dapm_route audio_map[]={\r
@@ -183,11 +185,21 @@ static const struct snd_soc_dapm_route audio_map[]={
        // HP MIC\r
        {"micbias1", NULL, "Headset Jack"},\r
        {"MIC3", NULL, "micbias1"},\r
+\r
+       {"Ext Spk", NULL, "SPOLP"},\r
+       {"Ext Spk", NULL, "SPOLN"},\r
+       {"Ext Spk", NULL, "SPORP"},\r
+       {"Ext Spk", NULL, "SPORN"},\r
+\r
+       {"Headphone Jack", NULL, "HPOL"},\r
+       {"Headphone Jack", NULL, "HPOR"},\r
 } ;\r
 \r
 static const struct snd_kcontrol_new rk_controls[] = {\r
        SOC_DAPM_PIN_SWITCH("Mic Jack"),\r
        SOC_DAPM_PIN_SWITCH("Headset Jack"),\r
+       SOC_DAPM_PIN_SWITCH("Ext Spk"),\r
+       SOC_DAPM_PIN_SWITCH("Headphone Jack"),\r
 };\r
 \r
 /*\r
@@ -211,6 +223,8 @@ static int rk29_rt3261_init(struct snd_soc_pcm_runtime *rtd)
 \r
        snd_soc_dapm_enable_pin(dapm, "Mic Jack");\r
        snd_soc_dapm_enable_pin(dapm, "Headset Jack");\r
+       snd_soc_dapm_enable_pin(dapm, "Ext Spk");\r
+       snd_soc_dapm_enable_pin(dapm, "Headphone Jack");\r
        snd_soc_dapm_sync(dapm);\r
 \r
        return 0;\r