} } return ret; gpio_failed: gpio_free(wm8903_gpio_intr->gpio); failed: kfree(wm8903_gpio_intr); wm8903_gpio_intr = NULL; return ret; } #endif /*tegra machine dapm widgets */ static const struct snd_soc_dapm_widget tegra_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_HP("Headset Out", NULL), SND_SOC_DAPM_MIC("Headset In", NULL), SND_SOC_DAPM_SPK("Lineout", NULL), SND_SOC_DAPM_SPK("Int Spk", tegra_dapm_event_int_spk), SND_SOC_DAPM_MIC("Ext Mic", tegra_dapm_event_ext_mic), SND_SOC_DAPM_MIC("Int Mic", tegra_dapm_event_int_mic), SND_SOC_DAPM_LINE("Linein", NULL), }; /* Tegra machine audio map (connections to the codec pins) */ static const struct snd_soc_dapm_route audio_map[] = { /* headphone connected to LHPOUT1, RHPOUT1 */ {"Headphone", NULL, "HPOUTR"}, {"Headphone", NULL, "HPOUTL"},
if (ret < 0) return ret; return 0; } /* * SMDK WM8580 DAI operations. */ static struct snd_soc_ops smdk_ops = { .hw_params = smdk_hw_params, }; /* SMDK Playback widgets */ static const struct snd_soc_dapm_widget wm8580_dapm_widgets_pbk[] = { SND_SOC_DAPM_HP("Front", NULL), SND_SOC_DAPM_HP("Center+Sub", NULL), SND_SOC_DAPM_HP("Rear", NULL), }; /* SMDK Capture widgets */ static const struct snd_soc_dapm_widget wm8580_dapm_widgets_cpt[] = { SND_SOC_DAPM_MIC("MicIn", NULL), SND_SOC_DAPM_LINE("LineIn", NULL), }; /* SMDK-PAIFTX connections */ static const struct snd_soc_dapm_route audio_map_tx[] = { /* MicIn feeds AINL */ {"AINL", NULL, "MicIn"},
/* Set the codec system clock for DAC and ADC */ ret = snd_soc_dai_set_sysclk(codec_dai, 0, CODEC_CLOCK, SND_SOC_CLOCK_IN); if (ret < 0) printk(KERN_ERR "can't set codec system clock\n"); return ret; } static const struct snd_soc_ops am3517evm_ops = { .hw_params = am3517evm_hw_params, }; /* am3517evm machine dapm widgets */ static const struct snd_soc_dapm_widget tlv320aic23_dapm_widgets[] = { SND_SOC_DAPM_HP("Line Out", NULL), SND_SOC_DAPM_LINE("Line In", NULL), SND_SOC_DAPM_MIC("Mic In", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { /* Line Out connected to LLOUT, RLOUT */ {"Line Out", NULL, "LOUT"}, {"Line Out", NULL, "ROUT"}, {"LLINEIN", NULL, "Line In"}, {"RLINEIN", NULL, "Line In"}, {"MICIN", NULL, "Mic In"}, };
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_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_wm8903_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"}, {"Headphone Jack", NULL, "HPOUTL"}, {"Int Spk", NULL, "ROP"}, {"Int Spk", NULL, "RON"}, {"Int Spk", NULL, "LOP"}, {"Int Spk", NULL, "LON"}, {"Mic Jack", NULL, "MICBIAS"}, {"IN1L", NULL, "Mic Jack"}, }; static const struct snd_soc_dapm_route seaboard_audio_map[] = {
#include <linux/of_gpio.h> #include <linux/delay.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> #include <sound/pcm_params.h> #include <sound/soc.h> #include "rockchip_i2s.h" #include "../codecs/rt5645.h" #define DRV_NAME "rockchip-snd-rt5645" static struct snd_soc_jack headset_jack; static const struct snd_soc_dapm_widget rk_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphones", NULL), SND_SOC_DAPM_SPK("Speakers", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), SND_SOC_DAPM_MIC("Int Mic", NULL), }; static const struct snd_soc_dapm_route rk_audio_map[] = { /* Input Lines */ {"DMIC L2", NULL, "Int Mic"}, {"DMIC R2", NULL, "Int Mic"}, {"RECMIXL", NULL, "Headset Mic"}, {"RECMIXR", NULL, "Headset Mic"}, /* Output Lines */ {"Headphones", NULL, "HPOR"}, {"Headphones", NULL, "HPOL"},
static const char *power_texts[] = {"Low-Power", "High-Performance"}; 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_MIC("Digital Mic 0", NULL), SND_SOC_DAPM_MIC("Digital Mic 1", NULL), SND_SOC_DAPM_MIC("Digital Mic 2", NULL), };
static int tcc_amp_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { return 0; } static int tcc_mic_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { return 0; } /* tcc machine dapm widgets */ static const struct snd_soc_dapm_widget tcc_es8388_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", tcc_hp_event), SND_SOC_DAPM_MIC("Mic Jack", tcc_mic_event), SND_SOC_DAPM_SPK("Ext Spk", tcc_amp_event), SND_SOC_DAPM_LINE("Line Jack", NULL), SND_SOC_DAPM_HP("Headset Jack", NULL), }; /* tcc machine audio map (connections to the codec pins) */ static const struct snd_soc_dapm_route tcc_audio_map[] = { /* mic is connected to MICIN (via right channel of headphone jack) */ {"MICIN", NULL, "Mic Jack"}, /* headset Jack - in = micin, out = LHPOUT*/ {"Headset Jack", NULL, "LOUT1"}, {"Headset Jack", NULL, "ROUT1"},
freq = 12288000; break; case 96000: freq = 24576000; break; } return snd_soc_dai_set_sysclk(codec_dai, 0, freq, SND_SOC_CLOCK_IN); } static struct snd_soc_ops a370db_ops = { .hw_params = a370db_hw_params, }; static const struct snd_soc_dapm_widget a370db_dapm_widgets[] = { SND_SOC_DAPM_HP("Out Jack", NULL), SND_SOC_DAPM_LINE("In Jack", NULL), }; static const struct snd_soc_dapm_route a370db_route[] = { { "Out Jack", NULL, "HPL" }, { "Out Jack", NULL, "HPR" }, { "AIN1L", NULL, "In Jack" }, { "AIN1L", NULL, "In Jack" }, }; static struct snd_soc_dai_link a370db_dai[] = { { .name = "CS42L51", .stream_name = "analog", .cpu_dai_name = "i2s",
} return 0; } const struct snd_soc_dapm_widget es_codec_dapm_widgets[] = { /* Inputs */ SND_SOC_DAPM_MIC("MIC0", mic_event), SND_SOC_DAPM_MIC("MIC1", mic_event), SND_SOC_DAPM_MIC("MIC2", mic_event), SND_SOC_DAPM_MIC("MICHS", NULL), SND_SOC_DAPM_MIC("AUXINM", NULL), SND_SOC_DAPM_MIC("AUXINP", NULL), /* Outputs */ SND_SOC_DAPM_HP("HPL", NULL), SND_SOC_DAPM_HP("HPR", NULL), SND_SOC_DAPM_SPK("SPKRL", NULL), SND_SOC_DAPM_SPK("SPKRR", NULL), SND_SOC_DAPM_OUTPUT("EP"), SND_SOC_DAPM_LINE("AUXOUTL", NULL), SND_SOC_DAPM_LINE("AUXOUTR", NULL), /* Microphone bias */ SND_SOC_DAPM_SUPPLY("MICHS Bias", ES_MICBIAS_CTRL, ES_MBIASHS_MODE_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("MIC0 Bias", ES_MICBIAS_CTRL, ES_MBIAS0_MODE_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("MIC1 Bias", ES_MICBIAS_CTRL, ES_MBIAS1_MODE_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("MIC2 Bias", ES_MICBIAS_CTRL,
#if 0 if (tegra_wired_jack_conf.en_mic_ext != -1) gpio_set_value_cansleep(tegra_wired_jack_conf.en_mic_ext, SND_SOC_DAPM_EVENT_ON(event) ? 1 : 0); if (tegra_wired_jack_conf.en_mic_int != -1) gpio_set_value_cansleep(tegra_wired_jack_conf.en_mic_int, SND_SOC_DAPM_EVENT_ON(event) ? 0 : 1); #endif return 0; } /*tegra machine dapm widgets */ static const struct snd_soc_dapm_widget tegra_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone", tegra_dapm_event_headphone), SND_SOC_DAPM_HP("Headset", tegra_dapm_event_headset), SND_SOC_DAPM_HP("Ext Hp", tegra_dapm_event_ext_hp), SND_SOC_DAPM_SPK("Lineout", tegra_dapm_event_int_spk), SND_SOC_DAPM_SPK("Int Spk", NULL), SND_SOC_DAPM_MIC("Ext Mic", tegra_dapm_event_ext_mic), SND_SOC_DAPM_MIC("Int Mic", tegra_dapm_event_int_mic), SND_SOC_DAPM_LINE("Linein", NULL), }; /* Tegra machine audio map (connections to the codec pins) */ static const struct snd_soc_dapm_route audio_map[] = { /* headphone connected to LHPOUT1, RHPOUT1 */ {"Headphone", NULL, "HPOUTR"}, {"Headphone", NULL, "HPOUTL"},
static int sirf_audio_spk_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *ctrl, int event) { struct snd_soc_dapm_context *dapm = w->dapm; struct snd_soc_card *card = dapm->card; struct sirf_audio_card *sirf_audio_card = snd_soc_card_get_drvdata(card); int on = !SND_SOC_DAPM_EVENT_OFF(event); if (gpio_is_valid(sirf_audio_card->gpio_spk_pa)) gpio_set_value(sirf_audio_card->gpio_spk_pa, on); return 0; } static const struct snd_soc_dapm_widget sirf_audio_dapm_widgets[] = { SND_SOC_DAPM_HP("Hp", sirf_audio_hp_event), SND_SOC_DAPM_SPK("Ext Spk", sirf_audio_spk_event), SND_SOC_DAPM_MIC("Ext Mic", NULL), }; static const struct snd_soc_dapm_route intercon[] = { {"Hp", NULL, "HPOUTL"}, {"Hp", NULL, "HPOUTR"}, {"Ext Spk", NULL, "SPKOUT"}, {"MICIN1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Ext Mic"}, }; /* Digital audio interface glue - connects codec <--> CPU */ static struct snd_soc_dai_link sirf_audio_dai_link[] = { {
static int kylew_amp_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { kylew_dbg("Entering %s e=0x%x\n", __func__, event); audio_speaker_enable(SND_SOC_DAPM_EVENT_ON(event)); kylew_dbg("Leaving %s\n", __func__); return 0; } static const struct snd_soc_dapm_widget dolphin_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("HP Mic Jack", NULL), SND_SOC_DAPM_SPK("Ext Spk", kylew_amp_event), SND_SOC_DAPM_SPK("Ext Ear", kylew_ear_event), SND_SOC_DAPM_LINE("Line Jack", NULL), SND_SOC_DAPM_HP("HeadPhone Jack", kylew_hp_event), }; /* kylew supported audio map */ static const struct snd_soc_dapm_route kylew_audio_map[] = { {"HeadPhone Jack", NULL, "HEAD_P"}, {"Ext Spk", NULL, "AUXSP"}, {"Ext Ear", NULL, "EAR"}, {"MIC", NULL, "Mic Jack"}, {"AUXMIC", NULL, "HP Mic Jack"}, {"AI", NULL, "Line Jack"}, }; static inline int kylew_func_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
struct snd_kcontrol *k, int event) { sc881x_dbg("Entering %s switch %s\n", __func__, SND_SOC_DAPM_EVENT_ON(event) ? "ON" : "OFF"); audio_speaker_enable(! !SND_SOC_DAPM_EVENT_ON(event)); sc881x_dbg("Leaving %s\n", __func__); return 0; } static const struct snd_soc_dapm_widget dolphin_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("HP Mic Jack", NULL), SND_SOC_DAPM_SPK("Ext Spk", sc881x_amp_event), SND_SOC_DAPM_SPK("Ext Ear", sc881x_ear_event), SND_SOC_DAPM_LINE("Line Jack", NULL), SND_SOC_DAPM_HP("HeadPhone Jack", sc881x_hp_event), }; /* sc881x supported audio map */ static const struct snd_soc_dapm_route sc881x_audio_map[] = { {"HeadPhone Jack", NULL, "HEAD_P"}, {"Ext Spk", NULL, "AUXSP"}, {"Ext Ear", NULL, "EAR"}, {"MIC", NULL, "Mic Jack"}, {"AUXMIC", NULL, "HP Mic Jack"}, {"AI", NULL, "Line Jack"}, }; static inline int sc881x_func_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
static int smdk_wm8994_setp(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); if (smdk_aud_mode == ucontrol->value.integer.value[0]) return 0; smdk_aud_mode = ucontrol->value.integer.value[0]; smdk_aud_ext_control(codec); return 1; } static const struct snd_soc_dapm_widget smdk_dapm_widgets[] = { SND_SOC_DAPM_HP("Headset Out", NULL), SND_SOC_DAPM_MIC("Mic In", NULL), SND_SOC_DAPM_LINE("Line In", NULL), }; static const struct soc_enum smdk_aud_enum[] = { SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(smdk_aud_scenario), smdk_aud_scenario), }; static const struct snd_kcontrol_new smdk_aud_controls[] = { SOC_ENUM_EXT("Smdk Audio Mode", smdk_aud_enum[0], smdk_wm8994_getp, smdk_wm8994_setp), }; static const struct snd_soc_dapm_route smdk_dapm_routes[] = {
} static int n810_jack_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { if (SND_SOC_DAPM_EVENT_ON(event)) gpio_set_value(N810_HEADSET_AMP_GPIO, 1); else gpio_set_value(N810_HEADSET_AMP_GPIO, 0); return 0; } static const struct snd_soc_dapm_widget aic33_dapm_widgets[] = { SND_SOC_DAPM_SPK("Ext Spk", n810_spk_event), SND_SOC_DAPM_HP("Headphone Jack", n810_jack_event), SND_SOC_DAPM_MIC("DMic", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { {"Headphone Jack", NULL, "HPLOUT"}, {"Headphone Jack", NULL, "HPROUT"}, {"Ext Spk", NULL, "LLOUT"}, {"Ext Spk", NULL, "RLOUT"}, {"DMic Rate 64", NULL, "Mic Bias"}, {"Mic Bias", NULL, "DMic"}, }; static const char *spk_function[] = {"Off", "On"};
return ret; ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C_I2SV2_DIV_RCLK, rfs); if (ret < 0) return ret; return 0; } static struct snd_soc_ops smdk64xx_ops = { .hw_params = smdk64xx_hw_params, }; /* SMDK64xx Playback widgets */ static const struct snd_soc_dapm_widget wm8580_dapm_widgets_pbk[] = { SND_SOC_DAPM_HP("Front-L/R", NULL), SND_SOC_DAPM_HP("Center/Sub", NULL), SND_SOC_DAPM_HP("Rear-L/R", NULL), }; /* SMDK64xx Capture widgets */ static const struct snd_soc_dapm_widget wm8580_dapm_widgets_cpt[] = { SND_SOC_DAPM_MIC("MicIn", NULL), SND_SOC_DAPM_LINE("LineIn", NULL), }; /* SMDK-PAIFTX connections */ static const struct snd_soc_dapm_route audio_map_tx[] = { /* MicIn feeds AINL */ {"AINL", NULL, "MicIn"},
static int hx4700_spk_power(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { 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; } 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), }; static const struct snd_soc_dapm_route hx4700_audio_map[] = { {"Headphone Jack", NULL, "LOUT"}, {"Headphone Jack", NULL, "ROUT"}, {"Speaker", NULL, "MOUT2"}, {"MICIN", NULL, "Built-in Microphone"},
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), #endif #endif // #if defined(CONFIG_PRODUCT_LGE_LU6800) || defined(CONFIG_PRODUCT_LGE_KU5900) || defined (CONFIG_PRODUCT_LGE_P970)
#include <sound/pcm.h> #include <sound/soc.h> #include <sound/pcm_params.h> #include "../codecs/adau1373.h" static const struct snd_soc_dapm_widget bfin_eval_adau1373_dapm_widgets[] = { SND_SOC_DAPM_LINE("Line In1", NULL), SND_SOC_DAPM_LINE("Line In2", NULL), SND_SOC_DAPM_LINE("Line In3", NULL), SND_SOC_DAPM_LINE("Line In4", NULL), SND_SOC_DAPM_LINE("Line Out1", NULL), SND_SOC_DAPM_LINE("Line Out2", NULL), SND_SOC_DAPM_LINE("Stereo Out", NULL), SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_HP("Earpiece", NULL), SND_SOC_DAPM_SPK("Speaker", NULL), }; static const struct snd_soc_dapm_route bfin_eval_adau1373_dapm_routes[] = { { "AIN1L", NULL, "Line In1" }, { "AIN1R", NULL, "Line In1" }, { "AIN2L", NULL, "Line In2" }, { "AIN2R", NULL, "Line In2" }, { "AIN3L", NULL, "Line In3" }, { "AIN3R", NULL, "Line In3" }, { "AIN4L", NULL, "Line In4" }, { "AIN4R", NULL, "Line In4" }, /* MICBIAS can be connected via a jumper to the line-in jack, since w
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 int smartq_wm8987_init(struct snd_soc_codec *codec)
static struct snd_soc_jack rx51_av_jack; static struct snd_soc_jack_gpio rx51_av_jack_gpios[] = { { .name = "avdet-gpio", .report = SND_JACK_HEADSET, .invert = 1, .debounce_time = 200, }, }; static const struct snd_soc_dapm_widget aic34_dapm_widgets[] = { SND_SOC_DAPM_SPK("Ext Spk", rx51_spk_event), SND_SOC_DAPM_MIC("DMic", NULL), SND_SOC_DAPM_HP("Headphone Jack", rx51_hp_event), SND_SOC_DAPM_MIC("HS Mic", NULL), SND_SOC_DAPM_LINE("FM Transmitter", NULL), SND_SOC_DAPM_SPK("Earphone", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { {"Ext Spk", NULL, "HPLOUT"}, {"Ext Spk", NULL, "HPROUT"}, {"Headphone Jack", NULL, "LLOUT"}, {"Headphone Jack", NULL, "RLOUT"}, {"FM Transmitter", NULL, "LLOUT"}, {"FM Transmitter", NULL, "RLOUT"}, {"DMic Rate 64", NULL, "DMic"}, {"DMic", NULL, "Mic Bias"},
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"}, {"INB1", NULL, "Line In"},
#include <sound/jack.h> #include <asm/mach-types.h> #include <plat/board-ams-delta.h> #include <plat/mcbsp.h> #include "omap-mcbsp.h" #include "omap-pcm.h" #include "../codecs/cx20442.h" /* Board specific DAPM widgets */ static const struct snd_soc_dapm_widget ams_delta_dapm_widgets[] = { /* Handset */ SND_SOC_DAPM_MIC("Mouthpiece", NULL), SND_SOC_DAPM_HP("Earpiece", NULL), /* Handsfree/Speakerphone */ SND_SOC_DAPM_MIC("Microphone", NULL), SND_SOC_DAPM_SPK("Speaker", NULL), }; /* How they are connected to codec pins */ static const struct snd_soc_dapm_route ams_delta_audio_map[] = { {"TELIN", NULL, "Mouthpiece"}, {"Earpiece", NULL, "TELOUT"}, {"MIC", NULL, "Microphone"}, {"Speaker", NULL, "SPKOUT"}, }; /*
SOC_ENUM_EXT("AIF2 Mode", aif2_mode_enum[0], 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[] = {
regulator_disable(machine->dmic_1v8_reg); } } if (!(machine->gpio_requested & GPIO_INT_MIC_EN)) return 0; gpio_set_value_cansleep(pdata->gpio_int_mic_en, !!SND_SOC_DAPM_EVENT_ON(event)); return 0; } static const struct snd_soc_dapm_widget tegra_aic326x_dapm_widgets[] = { SND_SOC_DAPM_SPK("Int Spk", tegra_aic326x_event_int_spk), SND_SOC_DAPM_HP("Earpiece", NULL), SND_SOC_DAPM_HP("Headphone Jack", tegra_aic326x_event_hp), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_INPUT("Ext Mic"), SND_SOC_DAPM_LINE("Linein", NULL), SND_SOC_DAPM_MIC("Int Mic", tegra_aic326x_event_dmic), SND_SOC_DAPM_MIC("DMIC", NULL), }; static const struct snd_soc_dapm_route aic326x_audio_map[] = { {"Int Spk", NULL, "SPK Left Playback"}, {"Int Spk", NULL, "SPK Right Playback"}, {"Earpiece", NULL, "RECP Playback"}, {"Earpiece", NULL, "RECM Playback"}, {"Headphone Jack", NULL, "HP Left Playback"}, {"Headphone Jack", NULL, "HP Right Playback"},