"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" }; static const struct soc_enum charge_pump_enum = SOC_ENUM_SINGLE(CS42L73_CPFCHC, 4, ARRAY_SIZE(charge_pump_freq_text), charge_pump_freq_text); static const char * const cs42l73_mono_mix_texts[] = { "Left", "Right", "Mono Mix"}; static const unsigned int cs42l73_mono_mix_values[] = { 0, 1, 2 }; static const struct soc_enum spk_asp_enum = SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 6, 3, ARRAY_SIZE(cs42l73_mono_mix_texts), cs42l73_mono_mix_texts, cs42l73_mono_mix_values); static const struct snd_kcontrol_new spk_asp_mixer = SOC_DAPM_ENUM("Route", spk_asp_enum); static const struct soc_enum spk_xsp_enum = SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 4, 3, ARRAY_SIZE(cs42l73_mono_mix_texts), cs42l73_mono_mix_texts, cs42l73_mono_mix_values); static const struct snd_kcontrol_new spk_xsp_mixer = SOC_DAPM_ENUM("Route", spk_xsp_enum); static const struct soc_enum esl_asp_enum =
EXPORT_SYMBOL_GPL(arizona_mixer_tlv); const char *arizona_rate_text[ARIZONA_RATE_ENUM_SIZE] = { "SYNCCLK rate", "8kHz", "16kHz", "ASYNCCLK rate", }; EXPORT_SYMBOL_GPL(arizona_rate_text); const int arizona_rate_val[ARIZONA_RATE_ENUM_SIZE] = { 0, 1, 2, 8, }; EXPORT_SYMBOL_GPL(arizona_rate_val); const struct soc_enum arizona_isrc_fsl[] = { SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_1_CTRL_2, ARIZONA_ISRC1_FSL_SHIFT, 0xf, ARIZONA_RATE_ENUM_SIZE, arizona_rate_text, arizona_rate_val), SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_2_CTRL_2, ARIZONA_ISRC2_FSL_SHIFT, 0xf, ARIZONA_RATE_ENUM_SIZE, arizona_rate_text, arizona_rate_val), SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_3_CTRL_2, ARIZONA_ISRC3_FSL_SHIFT, 0xf, ARIZONA_RATE_ENUM_SIZE, arizona_rate_text, arizona_rate_val), }; EXPORT_SYMBOL_GPL(arizona_isrc_fsl); static const char *arizona_vol_ramp_text[] = { "0ms/6dB", "0.5ms/6dB", "1ms/6dB", "2ms/6dB", "4ms/6dB", "8ms/6dB", "15ms/6dB", "30ms/6dB",
adctl2 &= ~0x4; else adctl2 |= 0x4; return snd_soc_write(codec, WM8988_ADCTL2, adctl2); } static const char *wm8988_line_texts[] = { "Line 1", "Line 2", "PGA", "Differential"}; static const unsigned int wm8988_line_values[] = { 0, 1, 3, 4}; static const struct soc_enum wm8988_lline_enum = SOC_VALUE_ENUM_SINGLE(WM8988_LOUTM1, 0, 7, ARRAY_SIZE(wm8988_line_texts), wm8988_line_texts, wm8988_line_values); static const struct snd_kcontrol_new wm8988_left_line_controls = SOC_DAPM_VALUE_ENUM("Route", wm8988_lline_enum); static const struct soc_enum wm8988_rline_enum = SOC_VALUE_ENUM_SINGLE(WM8988_ROUTM1, 0, 7, ARRAY_SIZE(wm8988_line_texts), wm8988_line_texts, wm8988_line_values); static const struct snd_kcontrol_new wm8988_right_line_controls = SOC_DAPM_VALUE_ENUM("Route", wm8988_lline_enum); /* Left Mixer */ static const struct snd_kcontrol_new wm8988_left_mixer_controls[] = { SOC_DAPM_SINGLE("Playback Switch", WM8988_LOUTM1, 8, 1, 0),
} return arizona_dvfs_sysclk_ev(w, kcontrol, event); } static const char *wm8997_osr_text[] = { "Low power", "Normal", "High performance", }; static const unsigned int wm8997_osr_val[] = { 0x0, 0x3, 0x5, }; static const struct soc_enum wm8997_hpout_osr[] = { SOC_VALUE_ENUM_SINGLE(ARIZONA_OUTPUT_PATH_CONFIG_1L, ARIZONA_OUT1_OSR_SHIFT, 0x7, ARRAY_SIZE(wm8997_osr_text), wm8997_osr_text, wm8997_osr_val), SOC_VALUE_ENUM_SINGLE(ARIZONA_OUTPUT_PATH_CONFIG_3L, ARIZONA_OUT3_OSR_SHIFT, 0x7, ARRAY_SIZE(wm8997_osr_text), wm8997_osr_text, wm8997_osr_val), }; #define WM8997_NG_SRC(name, base) \ SOC_SINGLE(name " NG HPOUT1L Switch", base, 0, 1, 0), \ SOC_SINGLE(name " NG HPOUT1R Switch", base, 1, 1, 0), \ SOC_SINGLE(name " NG EPOUT Switch", base, 4, 1, 0), \ SOC_SINGLE(name " NG SPKOUT Switch", base, 6, 1, 0), \ SOC_SINGLE(name " NG SPKDAT1L Switch", base, 8, 1, 0), \ SOC_SINGLE(name " NG SPKDAT1R Switch", base, 9, 1, 0)
static SOC_ENUM_SINGLE_DECL(ng_type_enum, CS42L52_NOISE_GATE_CTL, 6, cs42l52_ng_type_text); static const char * const left_swap_text[] = { "Left", "LR 2", "Right"}; static const char * const right_swap_text[] = { "Right", "LR 2", "Left"}; static const unsigned int swap_values[] = { 0, 1, 3 }; static const struct soc_enum adca_swap_enum = SOC_VALUE_ENUM_SINGLE(CS42L52_ADC_PCM_MIXER, 2, 3, ARRAY_SIZE(left_swap_text), left_swap_text, swap_values); static const struct snd_kcontrol_new adca_mixer = SOC_DAPM_ENUM("Route", adca_swap_enum); static const struct soc_enum pcma_swap_enum = SOC_VALUE_ENUM_SINGLE(CS42L52_ADC_PCM_MIXER, 6, 3, ARRAY_SIZE(left_swap_text), left_swap_text, swap_values); static const struct snd_kcontrol_new pcma_mixer = SOC_DAPM_ENUM("Route", pcma_swap_enum); static const struct soc_enum adcb_swap_enum =
/* Voice Sampling rates supported by Triton */ static const char *voice_sample_rates_txt[] = { "8000", "16000" }; /* * SEL_16K defined in CODEC_MODE register, which corresponds * to the voice sample rates defined above */ static const unsigned int voice_sample_rates_sel_16k[] = { 0x0, 0x1 }; static const struct soc_enum twl4030_audio_sample_rates_enum = SOC_VALUE_ENUM_SINGLE(TWL4030_REG_CODEC_MODE, 4, 0xf, ARRAY_SIZE(audio_sample_rates_txt), audio_sample_rates_txt, audio_sample_rates_apll); static const struct soc_enum twl4030_voice_sample_rates_enum = SOC_VALUE_ENUM_SINGLE(TWL4030_REG_CODEC_MODE, 3, 0x1, ARRAY_SIZE(voice_sample_rates_txt), voice_sample_rates_txt, voice_sample_rates_sel_16k); static int zoom2_hw_voice_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret;
ARIZONA_MIXER_ENUMS(ASRC2R, ARIZONA_ASRC2RMIX_INPUT_1_SOURCE); static const char *wm5102_aec_loopback_texts[] = { "HPOUT1L", "HPOUT1R", "HPOUT2L", "HPOUT2R", "EPOUT", "SPKOUTL", "SPKOUTR", "SPKDAT1L", "SPKDAT1R", }; static const unsigned int wm5102_aec_loopback_values[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, }; static const struct soc_enum wm5102_aec_loopback = SOC_VALUE_ENUM_SINGLE(ARIZONA_DAC_AEC_CONTROL_1, ARIZONA_AEC_LOOPBACK_SRC_SHIFT, ARIZONA_AEC_LOOPBACK_SRC_MASK, ARRAY_SIZE(wm5102_aec_loopback_texts), wm5102_aec_loopback_texts, wm5102_aec_loopback_values); static const struct snd_kcontrol_new wm5102_aec_loopback_mux = SOC_DAPM_VALUE_ENUM("AEC Loopback", wm5102_aec_loopback); static const struct snd_soc_dapm_widget wm5102_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("SYSCLK", ARIZONA_SYSTEM_CLOCK_1, ARIZONA_SYSCLK_ENA_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("ASYNCCLK", ARIZONA_ASYNC_CLOCK_1, ARIZONA_ASYNC_CLK_ENA_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("OPCLK", ARIZONA_OUTPUT_SYSTEM_CLOCK, ARIZONA_OPCLK_ENA_SHIFT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("ASYNCOPCLK", ARIZONA_OUTPUT_ASYNC_CLOCK, ARIZONA_OPCLK_ASYNC_ENA_SHIFT, 0, NULL, 0),
"12kHz", "24kHz", "48kHz", "96kHz", "192kHz", "11.025kHz", "22.05kHz", "44.1kHz", "88.2kHz", "176.4kHz", "4kHz", "8kHz", "16kHz", "32kHz", }; EXPORT_SYMBOL_GPL(arizona_sample_rate_text); const int arizona_sample_rate_val[ARIZONA_SAMPLE_RATE_ENUM_SIZE] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x10, 0x11, 0x12, 0x13, }; EXPORT_SYMBOL_GPL(arizona_sample_rate_val); const struct soc_enum arizona_sample_rate[] = { SOC_VALUE_ENUM_SINGLE(ARIZONA_SAMPLE_RATE_2, ARIZONA_SAMPLE_RATE_2_SHIFT, 0x1f, ARIZONA_SAMPLE_RATE_ENUM_SIZE, arizona_sample_rate_text, arizona_sample_rate_val), SOC_VALUE_ENUM_SINGLE(ARIZONA_SAMPLE_RATE_3, ARIZONA_SAMPLE_RATE_3_SHIFT, 0x1f, ARIZONA_SAMPLE_RATE_ENUM_SIZE, arizona_sample_rate_text, arizona_sample_rate_val), }; EXPORT_SYMBOL_GPL(arizona_sample_rate); const char *arizona_rate_text[ARIZONA_RATE_ENUM_SIZE] = { "SYNCCLK rate 1", "SYNCCLK rate 2", "SYNCCLK rate 3", "ASYNCCLK rate", }; EXPORT_SYMBOL_GPL(arizona_rate_text);
static const char *es8323_line_texts[] = { "Line 1", "Line 2", "PGA"}; static const unsigned int es8323_line_values[] = { 0, 1, 3}; static const char *es8323_pga_sel[] = {"Line 1", "Line 2", "Differential"}; static const char *stereo_3d_txt[] = {"No 3D ", "Level 1","Level 2","Level 3","Level 4","Level 5","Level 6","Level 7"}; static const char *alc_func_txt[] = {"Off", "Right", "Left", "Stereo"}; static const char *ng_type_txt[] = {"Constant PGA Gain","Mute ADC Output"}; static const char *deemph_txt[] = {"None", "32Khz", "44.1Khz", "48Khz"}; static const char *adcpol_txt[] = {"Normal", "L Invert", "R Invert","L + R Invert"}; static const char *es8323_mono_mux[] = {"Stereo", "Mono (Left)","Mono (Right)"}; static const char *es8323_diff_sel[] = {"Line 1", "Line 2"}; static const struct soc_enum es8323_enum[]={ SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 3, 7, ARRAY_SIZE(es8323_line_texts), es8323_line_texts, es8323_line_values),/* LLINE */ SOC_VALUE_ENUM_SINGLE(ES8323_DACCONTROL16, 0, 7, ARRAY_SIZE(es8323_line_texts), es8323_line_texts, es8323_line_values),/* rline */ SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 6, 3, ARRAY_SIZE(es8323_pga_sel), es8323_line_texts, es8323_line_values),/* Left PGA Mux */ SOC_VALUE_ENUM_SINGLE(ES8323_ADCCONTROL2, 4, 3, ARRAY_SIZE(es8323_pga_sel), es8323_line_texts, es8323_line_values),/* Right PGA Mux */ SOC_ENUM_SINGLE(ES8323_DACCONTROL7, 2, 8, stereo_3d_txt),/* stereo-3d */ SOC_ENUM_SINGLE(ES8323_ADCCONTROL10, 6, 4, alc_func_txt),/*alc func*/ SOC_ENUM_SINGLE(ES8323_ADCCONTROL14, 1, 2, ng_type_txt),/*noise gate type*/ SOC_ENUM_SINGLE(ES8323_DACCONTROL6, 6, 4, deemph_txt),/*Playback De-emphasis*/ SOC_ENUM_SINGLE(ES8323_ADCCONTROL6, 6, 4, adcpol_txt), SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 3, 3, es8323_mono_mux), SOC_ENUM_SINGLE(ES8323_ADCCONTROL3, 7, 2, es8323_diff_sel), }; static const DECLARE_TLV_DB_SCALE(pga_tlv, 0, 300, 0); static const DECLARE_TLV_DB_SCALE(adc_tlv, -9600, 50, 1);
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" }; static const struct soc_enum charge_pump_enum = SOC_ENUM_SINGLE(CS42L73_CPFCHC, 4, ARRAY_SIZE(charge_pump_freq_text), charge_pump_freq_text); static const char * const cs42l73_mono_mix_texts[] = { "Left", "Right", "Mono Mix"}; static const unsigned int cs42l73_mono_mix_values[] = { 0, 1, 2 }; static const struct soc_enum spk_asp_enum = SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 6, 1, ARRAY_SIZE(cs42l73_mono_mix_texts), cs42l73_mono_mix_texts, cs42l73_mono_mix_values); static const struct snd_kcontrol_new spk_asp_mixer = SOC_DAPM_ENUM("Route", spk_asp_enum); static const struct soc_enum spk_xsp_enum = SOC_VALUE_ENUM_SINGLE(CS42L73_MMIXCTL, 4, 3, ARRAY_SIZE(cs42l73_mono_mix_texts), cs42l73_mono_mix_texts, cs42l73_mono_mix_values); static const struct snd_kcontrol_new spk_xsp_mixer = SOC_DAPM_ENUM("Route", spk_xsp_enum); static const struct soc_enum esl_asp_enum =
static const struct soc_enum auxin_input_type_enum = SOC_ENUM_SINGLE(ES_AUX_R_CTRL, ES_AUXR_SE_SHIFT, ARRAY_SIZE(micx_input_type_text), micx_input_type_text); static const char * const micx_bias_output_voltage_text[] = { "1.6V", "1.8V", "2.0V", "2.2V", "2.4V", "2.6V", "2.8V", "3.0V", }; static const unsigned int micx_bias_output_voltage_value[] = { 0, 1, 2, 3, 4, 5, 6, 7, }; static const struct soc_enum mic0_bias_output_voltage_enum = SOC_VALUE_ENUM_SINGLE(ES_MB_TRIM2, ES_MB0_TRIM_SHIFT, ES_MB0_TRIM_MASK, ARRAY_SIZE(micx_bias_output_voltage_text), micx_bias_output_voltage_text, micx_bias_output_voltage_value); static const struct soc_enum mic1_bias_output_voltage_enum = SOC_VALUE_ENUM_SINGLE(ES_MB_TRIM2, ES_MB1_TRIM_SHIFT, ES_MB1_TRIM_MASK, ARRAY_SIZE(micx_bias_output_voltage_text), micx_bias_output_voltage_text, micx_bias_output_voltage_value); static const struct soc_enum mic2_bias_output_voltage_enum = SOC_VALUE_ENUM_SINGLE(ES_MB_TRIM1, ES_MB2_TRIM_SHIFT, ES_MB2_TRIM_MASK, ARRAY_SIZE(micx_bias_output_voltage_text), micx_bias_output_voltage_text, micx_bias_output_voltage_value); static const struct soc_enum michs_bias_output_voltage_enum =