}
}
+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.
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
// 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
\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