SND_SOC_DAPM_MIXER("IN1R PGA", WM8993_POWER_MANAGEMENT_2, 4, 0, in1r_pga, ARRAY_SIZE(in1r_pga)), SND_SOC_DAPM_MIXER("IN2L PGA", WM8993_POWER_MANAGEMENT_2, 7, 0, in2l_pga, ARRAY_SIZE(in2l_pga)), SND_SOC_DAPM_MIXER("IN2R PGA", WM8993_POWER_MANAGEMENT_2, 5, 0, in2r_pga, ARRAY_SIZE(in2r_pga)), /* Dummy widgets to represent differential paths */ SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0), #ifdef TC4 SND_SOC_DAPM_MIC("MAIN MIC", NULL), SND_SOC_DAPM_MIC("SUB MIC", NULL), SND_SOC_DAPM_HP("HP", NULL), SND_SOC_DAPM_SPK("SPK", NULL), #endif SND_SOC_DAPM_MIXER("MIXINL", WM8993_POWER_MANAGEMENT_2, 9, 0, mixinl, ARRAY_SIZE(mixinl)), SND_SOC_DAPM_MIXER("MIXINR", WM8993_POWER_MANAGEMENT_2, 8, 0, mixinr, ARRAY_SIZE(mixinr)), SND_SOC_DAPM_MIXER("Left Output Mixer", WM8993_POWER_MANAGEMENT_3, 5, 0, left_output_mixer, ARRAY_SIZE(left_output_mixer)), SND_SOC_DAPM_MIXER("Right Output Mixer", WM8993_POWER_MANAGEMENT_3, 4, 0, right_output_mixer, ARRAY_SIZE(right_output_mixer)), SND_SOC_DAPM_PGA("Left Output PGA", WM8993_POWER_MANAGEMENT_3, 7, 0, NULL, 0), SND_SOC_DAPM_PGA("Right Output PGA", WM8993_POWER_MANAGEMENT_3, 6, 0, NULL, 0),
return ret; } snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0); snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK, (pll_out/4)/params_rate(params)-1); snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, 3); DBG("Enter:%s, %d, pll_out/4/params_rate(params) = %d \n", __FUNCTION__, __LINE__, (pll_out/4)/params_rate(params)); return 0; } 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[]={ /* Mic Jack --> MIC_IN*/ {"micbias1", NULL, "Mic Jack"}, {"MIC1", NULL, "micbias1"}, // HP MIC {"micbias1", NULL, "Headset Jack"}, {"MIC3", NULL, "micbias1"}, {"Ext Spk", NULL, "SPOLP"}, {"Ext Spk", NULL, "SPOLN"},
} /* set the codec system clock */ ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2, 8000 * 256, SND_SOC_CLOCK_IN); if (ret < 0) { printk("%s: snd_soc_dai_set_sysclk err =%d\n",__FUNCTION__,ret); return ret; } return ret; } static const struct snd_soc_dapm_widget rk29_dapm_widgets[] = { SND_SOC_DAPM_SPK("Ext Left Spk", NULL), SND_SOC_DAPM_SPK("Ext Right Spk", NULL), SND_SOC_DAPM_SPK("Ext Rcv", NULL), SND_SOC_DAPM_HP("Headset Stereophone", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Main Mic", NULL), SND_SOC_DAPM_MIC("2nd Mic", NULL), // SND_SOC_DAPM_LINE("Radio In", NULL), SND_SOC_DAPM_LINE("Line In", NULL), SND_SOC_DAPM_LINE("Line Out", NULL), }; static const struct snd_soc_dapm_route rk29_dapm_routes[] = { {"Ext Left Spk", NULL, "SPKOUTLP"}, {"Ext Left Spk", NULL, "SPKOUTLN"},
struct snd_soc_dapm_context *dapm = w->dapm; struct snd_soc_card *card = dapm->card; struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card); struct tegra_wm8903_platform_data *pdata = machine->pdata; if (!(machine->gpio_requested & GPIO_EXT_MIC_EN)) return 0; gpio_set_value_cansleep(pdata->gpio_ext_mic_en, SND_SOC_DAPM_EVENT_ON(event)); return 0; } static const struct snd_soc_dapm_widget cardhu_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", tegra_wm8903_event_int_spk), SND_SOC_DAPM_HP("Headphone Jack", tegra_wm8903_event_hp), SND_SOC_DAPM_LINE("Line Out", NULL), SND_SOC_DAPM_MIC("Mic Jack", tegra_wm8903_event_ext_mic), SND_SOC_DAPM_MIC("Int Mic", tegra_wm8903_event_int_mic), SND_SOC_DAPM_LINE("Line In", NULL), }; static const struct snd_soc_dapm_widget tegra_wm8903_default_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", tegra_wm8903_event_int_spk), SND_SOC_DAPM_HP("Headphone Jack", tegra_wm8903_event_hp), SND_SOC_DAPM_MIC("Mic Jack", NULL), }; static const struct snd_soc_dapm_route harmony_audio_map[] = { {"Headphone Jack", NULL, "HPOUTR"},
* for the WM9713 between the standard AC97 master clock and the * output of the CLK_POUT signal from the PXA. */ static int clk_pout; module_param(clk_pout, int, 0); MODULE_PARM_DESC(clk_pout, "Use CLK_POUT as WM9713 MCLK (SW15 on board)."); static struct clk *pout; static struct snd_soc_card zylonite; static const struct snd_soc_dapm_widget zylonite_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("Headset Microphone", NULL), SND_SOC_DAPM_MIC("Handset Microphone", NULL), SND_SOC_DAPM_SPK("Multiactor", NULL), SND_SOC_DAPM_SPK("Headset Earpiece", NULL), }; /* Currently supported audio map */ static const struct snd_soc_dapm_route audio_map[] = { /* Headphone output connected to HPL/HPR */ { "Headphone", NULL, "HPL" }, { "Headphone", NULL, "HPR" }, /* On-board earpiece */ { "Headset Earpiece", NULL, "OUT3" }, /* Headphone mic */ { "MIC2A", NULL, "Mic Bias" },
SOC_DAPM_PIN_SWITCH("Internal Speaker"), SOC_DAPM_PIN_SWITCH("Headphone Jack"), SOC_DAPM_PIN_SWITCH("Internal Mic"), }; static int smartq_speaker_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { gpio_set_value(S3C64XX_GPK(12), SND_SOC_DAPM_EVENT_OFF(event)); return 0; } static const struct snd_soc_dapm_widget wm8987_dapm_widgets[] = { SND_SOC_DAPM_SPK("Internal Speaker", smartq_speaker_event), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Internal Mic", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { {"Headphone Jack", NULL, "LOUT2"}, {"Headphone Jack", NULL, "ROUT2"}, {"Internal Speaker", NULL, "LOUT2"}, {"Internal Speaker", NULL, "ROUT2"}, {"Mic Bias", NULL, "Internal Mic"}, {"LINPUT2", NULL, "Mic Bias"}, };
static const struct soc_enum omap_abe_enum[] = { SOC_ENUM_SINGLE_EXT(2, power_texts), }; static const struct snd_kcontrol_new omap_abe_controls[] = { SOC_ENUM_EXT("TWL6040 Power Mode", omap_abe_enum[0], omap_abe_get_power_mode, omap_abe_set_power_mode), }; #endif /* OMAP ABE TWL6040 machine DAPM */ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = { /* Outputs */ SND_SOC_DAPM_HP("Headset Stereophone", NULL), SND_SOC_DAPM_SPK("Earphone Spk", NULL), SND_SOC_DAPM_SPK("Ext Spk", NULL), SND_SOC_DAPM_LINE("Line Out", NULL), SND_SOC_DAPM_SPK("Vibrator", NULL), /* Inputs */ SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Main Handset Mic", NULL), SND_SOC_DAPM_MIC("Sub Handset Mic", NULL), SND_SOC_DAPM_LINE("Line In", NULL), SND_SOC_DAPM_SUPPLY("AV Switch Supply", SND_SOC_NOPM, 0, 0, omap_abe_av_switch_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_MIC("Digital Mic 0", NULL), SND_SOC_DAPM_MIC("Digital Mic 1", NULL), SND_SOC_DAPM_MIC("Digital Mic 2", NULL),
aml_m8_spk_enabled = 1; msleep(p_audio->sleep_time); break; case SND_SOC_DAPM_PRE_PMD: printk("speaker_events--mute =0\n"); amlogic_gpio_direction_output(p_audio->gpio_mute, 0, "mute_spk"); //amlogic_set_value(p_audio->gpio_mute, 0, "mute_spk"); aml_m8_spk_enabled = 0; break; } return 0; } static const struct snd_soc_dapm_widget aml_asoc_dapm_widgets[] = { SND_SOC_DAPM_SPK("Ext Spk", speaker_events), SND_SOC_DAPM_HP("HP", NULL), SND_SOC_DAPM_MIC("MAIN MIC", NULL), SND_SOC_DAPM_MIC("HEADSET MIC", NULL), }; static const struct snd_kcontrol_new aml_asoc_controls[] = { SOC_DAPM_PIN_SWITCH("Ext Spk"), }; static struct snd_soc_jack_pin jack_pins[] = { { .pin = "HP", .mask = SND_JACK_HEADPHONE, } };
get_aif2_mode, set_aif2_mode), SOC_ENUM_EXT("KPCS Mode", kpcs_mode_enum[0], get_kpcs_mode, set_kpcs_mode), SOC_ENUM_EXT("Input Clamp", input_clamp_enum[0], get_input_clamp, set_input_clamp), SOC_ENUM_EXT("LineoutSwitch Mode", lineout_mode_enum[0], get_lineout_mode, set_lineout_mode), }; const struct snd_soc_dapm_widget midas_dapm_widgets[] = { SND_SOC_DAPM_HP("HP", NULL), SND_SOC_DAPM_SPK("SPK", midas_ext_spkmode), SND_SOC_DAPM_SPK("RCV", NULL), SND_SOC_DAPM_LINE("LINE", midas_lineout_switch), SND_SOC_DAPM_LINE("HDMI", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Main Mic", midas_ext_micbias), SND_SOC_DAPM_MIC("Sub Mic", midas_ext_submicbias), SND_SOC_DAPM_MIC("Third Mic", midas_ext_thirdmicbias), SND_SOC_DAPM_LINE("FM In", NULL), SND_SOC_DAPM_INPUT("S5P RP"), }; const struct snd_soc_dapm_route midas_dapm_routes[] = { { "HP", NULL, "HPOUT1L" },
SOC_DAPM_PIN_SWITCH("Headset Mic"), SOC_ENUM_EXT("AIF2 Mode", aif2_mode_enum[0], get_aif2_mode, set_aif2_mode), SOC_ENUM_EXT("Input Clamp", input_clamp_enum[0], get_input_clamp, set_input_clamp), SOC_ENUM_EXT("LineoutSwitch Mode", lineout_mode_enum[0], get_lineout_mode, set_lineout_mode), }; const struct snd_soc_dapm_widget m3_dapm_widgets[] = { SND_SOC_DAPM_HP("HP", NULL), SND_SOC_DAPM_SPK("SPK", NULL), SND_SOC_DAPM_SPK("RCV", NULL), SND_SOC_DAPM_LINE("LINE", set_lineout_switch), SND_SOC_DAPM_LINE("HDMI", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Main Mic", set_ext_micbias), SND_SOC_DAPM_MIC("Sub Mic", set_ext_submicbias), SND_SOC_DAPM_LINE("FM In", NULL), SND_SOC_DAPM_INPUT("S5P RP"), }; const struct snd_soc_dapm_route m3_dapm_routes[] = { { "HP", NULL, "HPOUT1L" }, { "HP", NULL, "HPOUT1R" },
} static const char *mic_switch_texts[]={ "MIC1", "MIC2" }; static const struct soc_enum mic_switch_soc_enum = SOC_ENUM_SINGLE_EXT(2, mic_switch_texts); static const struct snd_kcontrol_new mic_switch_control = SOC_ENUM_EXT("Route", mic_switch_soc_enum, get_mic_switch, set_mic_switch); //jongik2.kim 20101220 add mic2 control [end] #endif // #if defined(CONFIG_PRODUCT_LGE_LU6800) || defined(CONFIG_PRODUCT_LGE_KU5900) || defined (CONFIG_PRODUCT_LGE_P970) static const struct snd_soc_dapm_widget hub_twl4030_dapm_widgets[] = { #if 0 //[email protected] SND_SOC_DAPM_MIC("Ext Mic", NULL), #else SND_SOC_DAPM_MIC("Ext Mic1", NULL), SND_SOC_DAPM_MIC("Ext Mic2", NULL), #endif SND_SOC_DAPM_SPK("Ext Spk", NULL), SND_SOC_DAPM_SPK("Receiver", NULL), SND_SOC_DAPM_HP("Headset Jack", NULL), SND_SOC_DAPM_MIC("Ext Headset Mic", NULL), //[email protected] SND_SOC_DAPM_LINE("Aux In", NULL), SND_SOC_DAPM_MUX("ExtAmp", SND_SOC_NOPM, 0, 0, &ext_amp_mode_control), SND_SOC_DAPM_MUX("Voice", SND_SOC_NOPM, 0, 0, &voice_mode_control), /* LGE_CHANGE_S [[email protected]] 2009-08-06, audio path */ SND_SOC_DAPM_MUX("Mic", SND_SOC_NOPM, 0, 0, &mic_mode_control), // 20100426 [email protected] Add the mic mute [START_LGE] SND_SOC_DAPM_MUX("CallRec", SND_SOC_NOPM, 0, 0, &callrec_mode_control), // 20100521 [email protected] call recording path [START_LGE] #if defined(CONFIG_PRODUCT_LGE_LU6800) || defined(CONFIG_PRODUCT_LGE_KU5900) || defined (CONFIG_PRODUCT_LGE_P970) //20101205 [email protected] Add STREAM for FM Radio [START] SND_SOC_DAPM_MUX("FMradio", SND_SOC_NOPM, 0, 0, &FM_volume_control), //20101205 [email protected] Add STREAM for FM Radio [END] SND_SOC_DAPM_MUX("MIC Switch", SND_SOC_NOPM, 0, 0, &mic_switch_control), //jongik2.kim 20101220 add mic2 control #if defined(CONFIG_CALL_USES_BS300) SND_SOC_DAPM_MUX("Bs300", SND_SOC_NOPM, 0, 0, &bs300_mode_control),
{ if (SND_SOC_DAPM_EVENT_ON(event)) //set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS); ; else //reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS); ; return 0; } /* pavo machine dapm widgets */ static const struct snd_soc_dapm_widget jzcodec_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Mic Jack",pavo_mic_event), SND_SOC_DAPM_SPK("Ext Spk", pavo_amp_event), SND_SOC_DAPM_LINE("Line Jack", NULL), SND_SOC_DAPM_HP("Headset Jack", NULL), }; /* pavo machine audio map (connections to the codec pins) */ static const char *audio_map[][3] = { /* headset Jack - in = micin, out = LHPOUT*/ {"Headset Jack", NULL, "LHPOUT"}, /* headphone connected to LHPOUT1, RHPOUT1 */ {"Headphone Jack", NULL, "LHPOUT"}, {"Headphone Jack", NULL, "RHPOUT"}, /* speaker connected to LOUT, ROUT */
if (plat->amp_enable == NULL) return 0; if (SND_SOC_DAPM_EVENT_ON(event)) plat->amp_enable(1); else plat->amp_enable(0); return 0; } /* imx_3stack card dapm widgets */ static const struct snd_soc_dapm_widget imx_3stack_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic1 Jack", NULL), SND_SOC_DAPM_LINE("Line In Jack", NULL), SND_SOC_DAPM_LINE("Line Out Jack", NULL), SND_SOC_DAPM_SPK("Ext Spk", spk_amp_event), SND_SOC_DAPM_HP("Headphone Jack", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { /* mic is connected to mic1 - with bias */ {"Left Input", NULL, "Mic1 Jack"}, /* Line in jack */ {"Left Input", NULL, "Line In Jack"}, {"Right Input", NULL, "Line In Jack"}, /* Headphone jack */ {"Headphone Jack", NULL, "HPL"}, {"Headphone Jack", NULL, "HPR"},
} #if (SND_SOC_WM8750) static const struct snd_soc_dapm_route audio_map[] = { { "Headphone Jack", NULL, "LOUT1" }, { "Headphone Jack", NULL, "ROUT1" }, { "Internal Speaker", NULL, "LOUT2" }, { "Internal Speaker", NULL, "ROUT2" }, { "LINPUT1", NULL, "Line Input" }, { "RINPUT1", NULL, "Line Input" }, }; static const struct snd_soc_dapm_widget ts4700_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_SPK("Internal Speaker", NULL), SND_SOC_DAPM_LINE("Line In", NULL), }; #else #if (0) static const struct snd_soc_dapm_route audio_map[] = { {"MIC_IN", NULL, "Mic Jack"}, {"LINE_IN", NULL, "Line In Jack"}, {"Headphone Jack", NULL, "HP_OUT"}, {"Ext Spk", NULL, "LINE_OUT"}, }; static const struct snd_soc_dapm_widget ts4700_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_LINE("Line In Jack", NULL), SND_SOC_DAPM_SPK("Ext Spk", NULL),
{ pr_debug("%s: event = %d\n", __func__, event); switch (event) { case SND_SOC_DAPM_PRE_PMU: return msm8960_enable_codec_ext_clk(w->codec, 1, true); case SND_SOC_DAPM_POST_PMD: return msm8960_enable_codec_ext_clk(w->codec, 0, true); } return 0; } static const struct snd_soc_dapm_widget msm8960_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm8960_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Ext Spk Bottom Pos", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Bottom Neg", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext USB AMP Pos", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext USB AMP Neg", msm8960_spkramp_event), SND_SOC_DAPM_MIC("Handset Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Back Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("ANCRight Headset Mic", NULL), SND_SOC_DAPM_MIC("ANCLeft Headset Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("Digital Mic2", NULL), SND_SOC_DAPM_MIC("Digital Mic3", NULL),
switch (event) { case SND_SOC_DAPM_PRE_PMU: return msm8930_enable_codec_ext_clk(w->codec, 1, true); case SND_SOC_DAPM_POST_PMD: return msm8930_enable_codec_ext_clk(w->codec, 0, true); } return 0; } static const struct snd_soc_dapm_widget msm8930_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm8930_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Ext Spk Left Pos", msm8930_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Left Neg", msm8930_spkramp_event), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("ANCRight Headset Mic", NULL), SND_SOC_DAPM_MIC("ANCLeft Headset Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("Digital Mic2", NULL), SND_SOC_DAPM_MIC("Digital Mic3", NULL), SND_SOC_DAPM_MIC("Digital Mic4", NULL), }; static const struct snd_soc_dapm_route common_audio_map[] = {
}; static struct snd_soc_jack_gpio tegra_jack_gpios[] = { { .name = "headphone detect", .report = SND_JACK_HEADPHONE, .debounce_time = 150, /*.gpio is filled in initialization from platform data */ } }; #endif /*tegra machine dapm widgets */ static const struct snd_soc_dapm_widget tegra_dapm_widgets[] = { SND_SOC_DAPM_SPK("Internal Speaker", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Internal Mic", NULL), }; /* Tegra machine audio map (connections to the codec pins) */ static const struct snd_soc_dapm_route audio_map[] = { {"Headphone Jack", NULL, "HPR"}, {"Headphone Jack", NULL, "HPL"}, {"Internal Speaker", NULL, "SPKL"}, {"Internal Speaker", NULL, "SPKLN"}, {"Internal Speaker", NULL, "SPKR"}, {"Internal Speaker", NULL, "SPKRN"}, {"Mic Bias1", NULL, "Internal Mic"}, {"MIC1", NULL, "Mic Bias1"}, };
add_timer(&timer); #endif break; case SND_SOC_BIAS_OFF: case SND_SOC_BIAS_STANDBY: #if HP_DET del_timer(&timer); #endif break; }; return ret; } static const struct snd_soc_dapm_widget aml_m1_dapm_widgets[] = { SND_SOC_DAPM_SPK("AVout Jack", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Headphone Mic", NULL), }; static const struct snd_soc_dapm_route intercon[] = { /* speaker connected to LINEOUT */ {"AVout Jack", NULL, "LINEOUT1L"}, {"AVout Jack", NULL, "LINEOUT1R"}, {"Headphone Jack", NULL, "HP_L"}, {"Headphone Jack", NULL, "HP_R"}, /* input */ /*
dev_err(card->dev, "codec_dai clock not set\n"); return err; } return 0; } static struct snd_soc_ops tegra_rt5631_ops = { .hw_params = tegra_rt5631_hw_params, }; static struct snd_soc_ops tegra_spdif_ops; static const struct snd_soc_dapm_widget cardhu_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("Int Mic", NULL), }; static const struct snd_soc_dapm_widget tegra_rt5631_default_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("Int Mic", NULL), }; static const struct snd_soc_dapm_route cardhu_audio_map[] = { {"Headphone Jack", NULL, "HPOL"},
struct snd_soc_dapm_context *dapm = w->dapm; struct snd_soc_card *card = dapm->card; struct tegra_max98095 *machine = snd_soc_card_get_drvdata(card); struct tegra_asoc_platform_data *pdata = machine->pdata; if (!(machine->gpio_requested & GPIO_HP_MUTE)) return 0; gpio_set_value_cansleep(pdata->gpio_hp_mute, !SND_SOC_DAPM_EVENT_ON(event)); return 0; } static const struct snd_soc_dapm_widget tegra_max98095_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", tegra_max98095_event_int_spk), SND_SOC_DAPM_HP("Headphone Jack", tegra_max98095_event_hp), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_INPUT("Int Mic"), SND_SOC_DAPM_LINE("Line In", NULL), }; static const struct snd_soc_dapm_route enterprise_audio_map[] = { {"Int Spk", NULL, "SPKL"}, {"Int Spk", NULL, "SPKR"}, {"Headphone Jack", NULL, "HPL"}, {"Headphone Jack", NULL, "HPR"}, {"MICBIAS2", NULL, "Mic Jack"}, {"MIC2", NULL, "MICBIAS2"}, {"MIC1", NULL, "Int Mic"}, {"MIC1", NULL, "MICBIAS1"},
switch (event) { case SND_SOC_DAPM_PRE_PMU: return msm8960_enable_codec_ext_clk(w->codec, 1, true); case SND_SOC_DAPM_POST_PMD: return msm8960_enable_codec_ext_clk(w->codec, 0, true); } return 0; } static const struct snd_soc_dapm_widget msm8960_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm8960_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Ext Spk Bottom Pos", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Bottom Neg", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Top Pos", msm8960_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Top Neg", msm8960_spkramp_event), SND_SOC_DAPM_MIC("Handset Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("ANCRight Headset Mic", NULL), SND_SOC_DAPM_MIC("ANCLeft Headset Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("Digital Mic2", NULL), SND_SOC_DAPM_MIC("Digital Mic3", NULL), SND_SOC_DAPM_MIC("Digital Mic4", NULL),
{ gpio_set_value(GPIO107_HX4700_SPK_nSD, !!SND_SOC_DAPM_EVENT_ON(event)); return 0; } static int hx4700_hp_power(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { gpio_set_value(GPIO92_HX4700_HP_DRIVER, !!SND_SOC_DAPM_EVENT_ON(event)); return 0; } /* hx4700 machine dapm widgets */ static const struct snd_soc_dapm_widget hx4700_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", hx4700_hp_power), SND_SOC_DAPM_SPK("Speaker", hx4700_spk_power), SND_SOC_DAPM_MIC("Built-in Microphone", NULL), }; /* hx4700 machine audio_map */ static const struct snd_soc_dapm_route hx4700_audio_map[] = { /* Headphone connected to LOUT, ROUT */ {"Headphone Jack", NULL, "LOUT"}, {"Headphone Jack", NULL, "ROUT"}, /* Speaker connected to MOUT2 */ {"Speaker", NULL, "MOUT2"}, /* Microphone connected to MICIN */ {"MICIN", NULL, "Built-in Microphone"},
} static int lm4853_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { gpio_set_value(S3C2410_GPJ(1), SND_SOC_DAPM_EVENT_OFF(event)); return 0; } static const struct snd_soc_dapm_widget neo1973_wm8753_dapm_widgets[] = { SND_SOC_DAPM_LINE("GSM Line Out", NULL), SND_SOC_DAPM_LINE("GSM Line In", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Handset Mic", NULL), SND_SOC_DAPM_SPK("Handset Spk", NULL), SND_SOC_DAPM_SPK("Stereo Out", lm4853_event), }; static const struct snd_soc_dapm_route neo1973_wm8753_routes[] = { /* Connections to the GSM Module */ {"GSM Line Out", NULL, "MONO1"}, {"GSM Line Out", NULL, "MONO2"}, {"RXP", NULL, "GSM Line In"}, {"RXN", NULL, "GSM Line In"}, /* Connections to Headset */ {"MIC1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Headset Mic"}, /* Call Mic */
static const struct snd_kcontrol_new micbias3_switch_controls = SOC_DAPM_SINGLE("Switch", TX_SWITCH_INDEX, 0, 1, 0); static const struct snd_soc_dapm_widget elite_dapm_widgets[] = { SND_SOC_DAPM_MIXER("Lineout Mixer", SND_SOC_NOPM, 0, 0, NULL, 0), SND_SOC_DAPM_MIXER("SPK AMP EN", SND_SOC_NOPM, 0, 0, &spkamp_switch_controls, 1), SND_SOC_DAPM_MIXER("HAC AMP EN", SND_SOC_NOPM, 0, 0, &earamp_switch_controls, 1), SND_SOC_DAPM_MIXER("DOCK AMP EN", SND_SOC_NOPM, 0, 0, &extspk_switch_controls, 1), SND_SOC_DAPM_MIXER("DUAL MICBIAS", SND_SOC_NOPM, 0, 0, &micbias3_switch_controls, 1), }; static const struct snd_soc_dapm_widget msm_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Ext Spk Bottom Pos", msm_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Bottom Neg", msm_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Top Pos", msm_spkramp_event), SND_SOC_DAPM_SPK("Ext Spk Top Neg", msm_spkramp_event), SND_SOC_DAPM_SPK("Dock Spk Pos", msm_spkramp_event), SND_SOC_DAPM_SPK("Dock Spk Neg", msm_spkramp_event), SND_SOC_DAPM_MIC("Handset Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Back Mic", NULL), SND_SOC_DAPM_MIC("Digital Mic1", NULL), SND_SOC_DAPM_MIC("ANCRight Headset Mic", NULL), SND_SOC_DAPM_MIC("ANCLeft Headset Mic", NULL),
static int rear_amp_event(struct snd_soc_dapm_widget *widget, struct snd_kcontrol *kctl, int event) { struct snd_soc_card *card = widget->dapm->card; struct snd_soc_pcm_runtime *rtd; struct snd_soc_codec *codec; rtd = snd_soc_get_pcm_runtime(card, card->dai_link[0].name); codec = rtd->codec; return rear_amp_power(codec, SND_SOC_DAPM_EVENT_ON(event)); } /* mioa701 machine dapm widgets */ static const struct snd_soc_dapm_widget mioa701_dapm_widgets[] = { SND_SOC_DAPM_SPK("Front Speaker", NULL), SND_SOC_DAPM_SPK("Rear Speaker", rear_amp_event), SND_SOC_DAPM_MIC("Headset", NULL), SND_SOC_DAPM_LINE("GSM Line Out", NULL), SND_SOC_DAPM_LINE("GSM Line In", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Front Mic", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { /* Call Mic */ {"Mic Bias", NULL, "Front Mic"}, {"MIC1", NULL, "Mic Bias"}, /* Headset Mic */ {"LINEL", NULL, "Headset Mic"},
}; static const struct snd_kcontrol_new controls[] = { SOC_DAPM_PIN_SWITCH("Main Speaker"), SOC_DAPM_PIN_SWITCH("Main DMIC"), SOC_DAPM_PIN_SWITCH("Main AMIC"), SOC_DAPM_PIN_SWITCH("WM1250 Input"), SOC_DAPM_PIN_SWITCH("WM1250 Output"), SOC_DAPM_PIN_SWITCH("Headphone"), }; static struct snd_soc_dapm_widget widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_SPK("Main Speaker", NULL), SND_SOC_DAPM_MIC("Main AMIC", NULL), SND_SOC_DAPM_MIC("Main DMIC", NULL), }; static struct snd_soc_dapm_route audio_paths[] = { { "IN1RN", NULL, "MICB1" }, { "IN1RP", NULL, "MICB1" }, { "IN1RN", NULL, "MICB2" }, { "IN1RP", NULL, "MICB2" }, { "MICB1", NULL, "Headset Mic", speyside_get_micbias }, { "MICB2", NULL, "Headset Mic", speyside_get_micbias }, { "IN1LP", NULL, "MICB2" }, { "IN1RN", NULL, "MICB1" },
struct snd_soc_card *card = w->dapm->card; struct byt_rt5651_private *priv = snd_soc_card_get_drvdata(card); if (SND_SOC_DAPM_EVENT_ON(event)) gpiod_set_value_cansleep(priv->ext_amp_gpio, 1); else gpiod_set_value_cansleep(priv->ext_amp_gpio, 0); return 0; } static const struct snd_soc_dapm_widget byt_rt5651_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Internal Mic", NULL), SND_SOC_DAPM_SPK("Speaker", NULL), SND_SOC_DAPM_LINE("Line In", NULL), SND_SOC_DAPM_SUPPLY("Platform Clock", SND_SOC_NOPM, 0, 0, platform_clock_control, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY("Ext Amp Power", SND_SOC_NOPM, 0, 0, rt5651_ext_amp_power_event, SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), }; static const struct snd_soc_dapm_route byt_rt5651_audio_map[] = { {"Headphone", NULL, "Platform Clock"}, {"Headset Mic", NULL, "Platform Clock"}, {"Internal Mic", NULL, "Platform Clock"}, {"Speaker", NULL, "Platform Clock"}, {"Speaker", NULL, "Ext Amp Power"},
gpio_set_value(CORGI_GPIO_APM_ON, SND_SOC_DAPM_EVENT_ON(event)); return 0; } static int corgi_mic_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { gpio_set_value(CORGI_GPIO_MIC_BIAS, SND_SOC_DAPM_EVENT_ON(event)); return 0; } /* corgi machine dapm widgets */ static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_MIC("Mic Jack", corgi_mic_event), SND_SOC_DAPM_SPK("Ext Spk", corgi_amp_event), SND_SOC_DAPM_LINE("Line Jack", NULL), SND_SOC_DAPM_HP("Headset Jack", NULL), }; /* Corgi machine audio map (connections to the codec pins) */ static const struct snd_soc_dapm_route corgi_audio_map[] = { /* headset Jack - in = micin, out = LHPOUT*/ {"Headset Jack", NULL, "LHPOUT"}, /* headphone connected to LHPOUT1, RHPOUT1 */ {"Headphone Jack", NULL, "LHPOUT"}, {"Headphone Jack", NULL, "RHPOUT"}, /* speaker connected to LOUT, ROUT */
/* Set cpu DAI configuration */ ret = snd_soc_dai_set_fmt(cpu_dai, fmt); if (ret < 0) { dev_err(card->dev, "can't set cpu DAI configuration\n"); return ret; } return 0; } static struct snd_soc_ops omap_twl4030_ops = { .hw_params = omap_twl4030_hw_params, }; static const struct snd_soc_dapm_widget dapm_widgets[] = { SND_SOC_DAPM_SPK("Earpiece Spk", NULL), SND_SOC_DAPM_SPK("Handsfree Spk", NULL), SND_SOC_DAPM_HP("Headset Stereophone", NULL), SND_SOC_DAPM_SPK("Ext Spk", NULL), SND_SOC_DAPM_SPK("Carkit Spk", NULL), SND_SOC_DAPM_MIC("Main Mic", NULL), SND_SOC_DAPM_MIC("Sub Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Carkit Mic", NULL), SND_SOC_DAPM_MIC("Digital0 Mic", NULL), SND_SOC_DAPM_MIC("Digital1 Mic", NULL), SND_SOC_DAPM_LINE("Line In", NULL), }; static const struct snd_soc_dapm_route audio_map[] = {
if( SND_SOC_DAPM_EVENT_ON(event) ){ snd_soc_write(codec, WM8994_GPIO_1, 0x41); } else{ snd_soc_write(codec, WM8994_GPIO_1, 0x1); } return 0; } #if defined(CONFIG_MACH_TENDERLOIN) static const struct snd_soc_dapm_widget tenderloin_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Internal Mic", NULL), SND_SOC_DAPM_SPK("Speaker",wm8994_en_pwr_amp), }; static struct snd_soc_dapm_route tenderloin_dapm_routes[] = { { "Headphone", NULL, "HPOUT1L" }, { "Headphone", NULL, "HPOUT1R" }, { "Speaker", NULL, "LINEOUT1P" }, { "Speaker", NULL, "LINEOUT1N" }, { "Speaker", NULL, "LINEOUT2P" }, { "Speaker", NULL, "LINEOUT2N" }, // Internal Mic { "IN1LN", NULL, "MICBIAS1" }, { "MICBIAS1", NULL, "Internal Mic" }, // Headset Mic