ASoC: Add DAPM machine widgets to SDP3430 driver
authorLopez Cruz, Misael <x0052729@ti.com>
Wed, 4 Mar 2009 17:39:07 +0000 (11:39 -0600)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 6 Mar 2009 13:37:06 +0000 (13:37 +0000)
Add DAPM machine domain widgets to SDP3430 machine driver.
Interconnection:
* Ext Mic: MAINMIC, SUBMIC
* Ext Spk: HFL, HFR
* Headset Jack: HSMIC, HSOL, HSOR

Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/omap/sdp3430.c

index e226fa75669c8695134958bff7732b0df8824a66..4eab4b491dee4e9143894dd80dc1f85115b6842f 100644 (file)
@@ -81,12 +81,76 @@ static struct snd_soc_ops sdp3430_ops = {
        .hw_params = sdp3430_hw_params,
 };
 
+/* SDP3430 machine DAPM */
+static const struct snd_soc_dapm_widget sdp3430_twl4030_dapm_widgets[] = {
+       SND_SOC_DAPM_MIC("Ext Mic", NULL),
+       SND_SOC_DAPM_SPK("Ext Spk", NULL),
+       SND_SOC_DAPM_HP("Headset Jack", NULL),
+};
+
+static const struct snd_soc_dapm_route audio_map[] = {
+       /* External Mics: MAINMIC, SUBMIC with bias*/
+       {"MAINMIC", NULL, "Mic Bias 1"},
+       {"SUBMIC", NULL, "Mic Bias 2"},
+       {"Mic Bias 1", NULL, "Ext Mic"},
+       {"Mic Bias 2", NULL, "Ext Mic"},
+
+       /* External Speakers: HFL, HFR */
+       {"Ext Spk", NULL, "HFL"},
+       {"Ext Spk", NULL, "HFR"},
+
+       /* Headset: HSMIC (with bias), HSOL, HSOR */
+       {"Headset Jack", NULL, "HSOL"},
+       {"Headset Jack", NULL, "HSOR"},
+       {"HSMIC", NULL, "Headset Mic Bias"},
+       {"Headset Mic Bias", NULL, "Headset Jack"},
+};
+
+static int sdp3430_twl4030_init(struct snd_soc_codec *codec)
+{
+       int ret;
+
+       /* Add SDP3430 specific widgets */
+       ret = snd_soc_dapm_new_controls(codec, sdp3430_twl4030_dapm_widgets,
+                               ARRAY_SIZE(sdp3430_twl4030_dapm_widgets));
+       if (ret)
+               return ret;
+
+       /* Set up SDP3430 specific audio path audio_map */
+       snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
+
+       /* SDP3430 connected pins */
+       snd_soc_dapm_enable_pin(codec, "Ext Mic");
+       snd_soc_dapm_enable_pin(codec, "Ext Spk");
+       snd_soc_dapm_enable_pin(codec, "Headset Jack");
+
+       /* TWL4030 not connected pins */
+       snd_soc_dapm_nc_pin(codec, "AUXL");
+       snd_soc_dapm_nc_pin(codec, "AUXR");
+       snd_soc_dapm_nc_pin(codec, "CARKITMIC");
+       snd_soc_dapm_nc_pin(codec, "DIGIMIC0");
+       snd_soc_dapm_nc_pin(codec, "DIGIMIC1");
+
+       snd_soc_dapm_nc_pin(codec, "OUTL");
+       snd_soc_dapm_nc_pin(codec, "OUTR");
+       snd_soc_dapm_nc_pin(codec, "EARPIECE");
+       snd_soc_dapm_nc_pin(codec, "PREDRIVEL");
+       snd_soc_dapm_nc_pin(codec, "PREDRIVER");
+       snd_soc_dapm_nc_pin(codec, "CARKITL");
+       snd_soc_dapm_nc_pin(codec, "CARKITR");
+
+       ret = snd_soc_dapm_sync(codec);
+
+       return ret;
+}
+
 /* Digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link sdp3430_dai = {
        .name = "TWL4030",
        .stream_name = "TWL4030",
        .cpu_dai = &omap_mcbsp_dai[0],
        .codec_dai = &twl4030_dai,
+       .init = sdp3430_twl4030_init,
        .ops = &sdp3430_ops,
 };