/* set codec DAI configuration */ snd_soc_dai_set_fmt(codec_dai, dai_format); /* set codec Master clock */ snd_soc_dai_set_sysclk(codec_dai, 0, mclk_freq, SND_SOC_CLOCK_IN); return 0; } static struct snd_soc_ops imx_3stack_surround_ops = { .startup = imx_3stack_startup, .shutdown = imx_3stack_shutdown, .hw_params = imx_3stack_surround_hw_params, }; static const struct snd_soc_dapm_widget imx_3stack_dapm_widgets[] = { SND_SOC_DAPM_LINE("Line Out Jack", NULL), SND_SOC_DAPM_LINE("Line In Jack", NULL), }; static const struct snd_soc_dapm_route audio_map[] = { /* Line out jack */ {"Line Out Jack", NULL, "AOUT1L"}, {"Line Out Jack", NULL, "AOUT1R"}, {"Line Out Jack", NULL, "AOUT2L"}, {"Line Out Jack", NULL, "AOUT2R"}, {"Line Out Jack", NULL, "AOUT3L"}, {"Line Out Jack", NULL, "AOUT3R"}, {"Line Out Jack", NULL, "AOUT4L"}, {"Line Out Jack", NULL, "AOUT4R"}, {"AIN1L", NULL, "Line In Jack"}, {"AIN1R", NULL, "Line In Jack"},
.mask = SND_JACK_MICROPHONE, }, }; static const struct snd_kcontrol_new broadwell_controls[] = { SOC_DAPM_PIN_SWITCH("Speaker"), SOC_DAPM_PIN_SWITCH("Headphone Jack"), }; static const struct snd_soc_dapm_widget broadwell_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_SPK("Speaker", NULL), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_MIC("DMIC1", NULL), SND_SOC_DAPM_MIC("DMIC2", NULL), SND_SOC_DAPM_LINE("Line Jack", NULL), }; static const struct snd_soc_dapm_route broadwell_rt286_map[] = { /* speaker */ {"Speaker", NULL, "SPOR"}, {"Speaker", NULL, "SPOL"}, /* HP jack connectors - unknown if we have jack deteck */ {"Headphone Jack", NULL, "HPO Pin"}, /* other jacks */ {"MIC1", NULL, "Mic Jack"}, {"LINE1", NULL, "Line Jack"},
SOC_DAPM_PIN_SWITCH("RCV"), SOC_DAPM_PIN_SWITCH("VPS"), SOC_DAPM_PIN_SWITCH("HDMI"), SOC_DAPM_PIN_SWITCH("Main Mic"), SOC_DAPM_PIN_SWITCH("Sub Mic"), SOC_DAPM_PIN_SWITCH("Third Mic"), SOC_DAPM_PIN_SWITCH("Headset Mic"), }; static const struct snd_soc_dapm_widget tm2_dapm_widgets[] = { SND_SOC_DAPM_HP("HP", NULL), SND_SOC_DAPM_SPK("SPK", NULL), SND_SOC_DAPM_SPK("RCV", NULL), SND_SOC_DAPM_LINE("VPS", NULL), SND_SOC_DAPM_LINE("HDMI", NULL), SND_SOC_DAPM_MIC("Main Mic", tm2_mic_bias), SND_SOC_DAPM_MIC("Sub Mic", NULL), SND_SOC_DAPM_MIC("Third Mic", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), }; static const struct snd_soc_component_driver tm2_component = { .name = "tm2-audio", }; static struct snd_soc_dai_driver tm2_ext_dai[] = { {
/* * Audio paths on Pandora board: * * |O| ---> PCM DAC +-> AMP -> Headphone Jack * |M| A +--------> Line Out * |A| <~~clk~~+ * |P| <--- TWL4030 <--------- Line In and MICs */ static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = { SND_SOC_DAPM_DAC("PCM DAC", "Playback", SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM, 0, 0, NULL, 0, omap3pandora_hp_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_LINE("Line Out", NULL), }; static const struct snd_soc_dapm_widget omap3pandora_in_dapm_widgets[] = { SND_SOC_DAPM_MIC("Mic (internal)", NULL), SND_SOC_DAPM_MIC("Mic (external)", NULL), SND_SOC_DAPM_LINE("Line In", NULL), }; static const struct snd_soc_dapm_route omap3pandora_out_map[] = { {"Headphone Amplifier", NULL, "PCM DAC"}, {"Line Out", NULL, "PCM DAC"}, {"Headphone Jack", NULL, "Headphone Amplifier"}, }; static const struct snd_soc_dapm_route omap3pandora_in_map[] = {
(prescaler << 0x8)); if (ret < 0) return ret; return 0; } /* * WM8580 HiFi DAI opserations. */ static struct snd_soc_ops smdkc100_hifi_ops = { .hw_params = smdkc100_hifi_hw_params, }; static const struct snd_soc_dapm_widget wm8580_dapm_widgets[] = { SND_SOC_DAPM_LINE("I2S Front Jack", NULL), SND_SOC_DAPM_LINE("I2S Center Jack", NULL), SND_SOC_DAPM_LINE("I2S Rear Jack", NULL), SND_SOC_DAPM_LINE("Line In Jack", NULL), }; /* example machine audio_mapnections */ static const struct snd_soc_dapm_route audio_map[] = { { "I2S Front Jack", NULL, "VOUT1L" }, { "I2S Front Jack", NULL, "VOUT1R" }, { "I2S Center Jack", NULL, "VOUT2L" }, { "I2S Center Jack", NULL, "VOUT2R" }, { "I2S Rear Jack", NULL, "VOUT3L" },
#if defined (CONFIG_SND_RK29_CODEC_SOC_SLAVE) div_bclk = 63; div_mclk = pll_out/(params_rate(params)*64) - 1; DBG("func is%s,pll_out=%ld,div_mclk=%ld div_bclk\n", __FUNCTION__,pll_out,div_mclk, div_bclk); snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0); snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK,div_bclk); snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, div_mclk); // DBG("Enter:%s, %d, LRCK=%d\n",__FUNCTION__,__LINE__,(pll_out/4)/params_rate(params)); #endif return 0; } static const struct snd_soc_dapm_widget rk29_dapm_widgets[] = { SND_SOC_DAPM_LINE("Audio Out", NULL), SND_SOC_DAPM_LINE("Line in", NULL), SND_SOC_DAPM_MIC("Micn", NULL), SND_SOC_DAPM_MIC("Micp", NULL), }; static const struct snd_soc_dapm_route audio_map[]= { {"Audio Out", NULL, "LOUT1"}, {"Audio Out", NULL, "ROUT1"}, {"Line in", NULL, "RINPUT1"}, {"Line in", NULL, "LINPUT1"}, // {"Micn", NULL, "RINPUT2"}, // {"Micp", NULL, "LINPUT2"}, };
static struct platform_device *evb3_snd_device; static struct snd_soc_jack hs_jack, mic_jack; static struct snd_soc_jack_pin hs_jack_pins[] = { { .pin = "Headset Stereophone", .mask = SND_JACK_HEADPHONE, }, }; static struct snd_soc_jack_pin mic_jack_pins[] = { { .pin = "Headset Mic 2", .mask = SND_JACK_MICROPHONE, }, }; static const struct snd_soc_dapm_widget evb3_dapm_widgets[] = { SND_SOC_DAPM_HP("Headset Stereophone", NULL), SND_SOC_DAPM_LINE("Lineout Out 1", NULL), SND_SOC_DAPM_LINE("Lineout Out 2", NULL), SND_SOC_DAPM_SPK("Ext Speaker", NULL), SND_SOC_DAPM_MIC("Ext Mic 1", NULL), SND_SOC_DAPM_MIC("Headset Mic 2", NULL), SND_SOC_DAPM_MIC("Ext Mic 3", NULL), }; static const struct snd_soc_dapm_route evb3_audio_map[] = { {"Headset Stereophone", NULL, "HS1"}, {"Headset Stereophone", NULL, "HS2"}, {"Ext Speaker", NULL, "LSP"}, {"Ext Speaker", NULL, "LSN"}, {"Lineout Out 1", NULL, "LINEOUT1"},
static struct snd_soc_jack_gpio rx51_av_jack_gpios[] = { { .gpio = RX51_JACK_DETECT_GPIO, .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), }; static const struct snd_soc_dapm_widget aic34_dapm_widgetsb[] = { 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, "Mic Bias"},
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"}, /* internal (IN2L/IN2R) mic is stero */ {"Mic Bias Int" ,NULL, "Int Mic"}, {"IN2 Left Capture", NULL, "Mic Bias Int"}, {"Mic Bias Int" ,NULL, "Int Mic"},
/* sound/soc/samsung/s3c24xx_simtec_hermes.c * * Copyright 2009 Simtec Electronics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <linux/module.h> #include <sound/soc.h> #include "s3c24xx_simtec.h" static const struct snd_soc_dapm_widget dapm_widgets[] = { SND_SOC_DAPM_LINE("GSM Out", NULL), SND_SOC_DAPM_LINE("GSM In", NULL), SND_SOC_DAPM_LINE("Line In", NULL), SND_SOC_DAPM_LINE("Line Out", NULL), SND_SOC_DAPM_LINE("ZV", NULL), SND_SOC_DAPM_MIC("Mic Jack", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL), }; static const struct snd_soc_dapm_route base_map[] = { /* Headphone connected to HP{L,R}OUT and HP{L,R}COM */ { "Headphone Jack", NULL, "HPLOUT" }, { "Headphone Jack", NULL, "HPLCOM" }, { "Headphone Jack", NULL, "HPROUT" }, { "Headphone Jack", NULL, "HPRCOM" },
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" }, { "HP", NULL, "HPOUT1R" },