|
@@ -145,15 +145,14 @@ static const DECLARE_TLV_DB_SCALE(hp_tlv, -4650, 150, 0);
|
|
|
/* -16.5db min scale, 1.5db steps, no mute */
|
|
|
static const DECLARE_TLV_DB_SCALE(adc_rec_tlv, -1650, 150, 0);
|
|
|
static const unsigned int boost_tlv[] = {
|
|
|
- TLV_DB_RANGE_HEAD(3),
|
|
|
- 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
|
|
|
- 1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
|
|
|
- 2, 2, TLV_DB_SCALE_ITEM(3000, 0, 0),
|
|
|
+ TLV_DB_RANGE_HEAD(2),
|
|
|
+ 0, 1, TLV_DB_SCALE_ITEM(0, 2000, 0),
|
|
|
+ 1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0),
|
|
|
};
|
|
|
/* 0db min scale, 6 db steps, no mute */
|
|
|
static const DECLARE_TLV_DB_SCALE(dig_tlv, 0, 600, 0);
|
|
|
/* 0db min scalem 0.75db steps, no mute */
|
|
|
-static const DECLARE_TLV_DB_SCALE(vdac_tlv, -3525, 075, 0);
|
|
|
+static const DECLARE_TLV_DB_SCALE(vdac_tlv, -3525, 75, 0);
|
|
|
|
|
|
static const struct snd_kcontrol_new alc5632_vol_snd_controls[] = {
|
|
|
/* left starts at bit 8, right at bit 0 */
|
|
@@ -176,26 +175,32 @@ static const struct snd_kcontrol_new alc5632_snd_controls[] = {
|
|
|
ALC5632_AUX_OUT_VOL, 15, 7, 1, 1),
|
|
|
SOC_SINGLE_TLV("Voice DAC Playback Volume",
|
|
|
ALC5632_VOICE_DAC_VOL, 0, 63, 0, vdac_tlv),
|
|
|
- SOC_SINGLE_TLV("Phone Capture Volume",
|
|
|
+ SOC_SINGLE("Voice DAC Playback Switch",
|
|
|
+ ALC5632_VOICE_DAC_VOL, 12, 1, 1),
|
|
|
+ SOC_SINGLE_TLV("Phone Playback Volume",
|
|
|
ALC5632_PHONE_IN_VOL, 8, 31, 1, vol_tlv),
|
|
|
- SOC_DOUBLE_TLV("LineIn Capture Volume",
|
|
|
+ SOC_DOUBLE_TLV("LineIn Playback Volume",
|
|
|
ALC5632_LINE_IN_VOL, 8, 0, 31, 1, vol_tlv),
|
|
|
SOC_DOUBLE_TLV("Master Playback Volume",
|
|
|
ALC5632_STEREO_DAC_IN_VOL, 8, 0, 63, 1, vdac_tlv),
|
|
|
SOC_DOUBLE("Master Playback Switch",
|
|
|
ALC5632_STEREO_DAC_IN_VOL, 15, 7, 1, 1),
|
|
|
- SOC_SINGLE_TLV("Mic1 Capture Volume",
|
|
|
+ SOC_SINGLE_TLV("Mic1 Playback Volume",
|
|
|
ALC5632_MIC_VOL, 8, 31, 1, vol_tlv),
|
|
|
- SOC_SINGLE_TLV("Mic2 Capture Volume",
|
|
|
+ SOC_SINGLE_TLV("Mic2 Playback Volume",
|
|
|
ALC5632_MIC_VOL, 0, 31, 1, vol_tlv),
|
|
|
SOC_DOUBLE_TLV("Rec Capture Volume",
|
|
|
ALC5632_ADC_REC_GAIN, 8, 0, 31, 0, adc_rec_tlv),
|
|
|
SOC_SINGLE_TLV("Mic 1 Boost Volume",
|
|
|
- ALC5632_MIC_CTRL, 10, 2, 0, boost_tlv),
|
|
|
+ ALC5632_MIC_CTRL, 10, 3, 0, boost_tlv),
|
|
|
SOC_SINGLE_TLV("Mic 2 Boost Volume",
|
|
|
- ALC5632_MIC_CTRL, 8, 2, 0, boost_tlv),
|
|
|
- SOC_SINGLE_TLV("Digital Boost Volume",
|
|
|
+ ALC5632_MIC_CTRL, 8, 3, 0, boost_tlv),
|
|
|
+ SOC_SINGLE_TLV("DMIC Boost Capture Volume",
|
|
|
ALC5632_DIGI_BOOST_CTRL, 0, 7, 0, dig_tlv),
|
|
|
+ SOC_SINGLE("DMIC En Capture Switch",
|
|
|
+ ALC5632_DIGI_BOOST_CTRL, 15, 1, 0),
|
|
|
+ SOC_SINGLE("DMIC PreFilter Capture Switch",
|
|
|
+ ALC5632_DIGI_BOOST_CTRL, 12, 1, 0),
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -244,36 +249,48 @@ SOC_DAPM_SINGLE("VOICE2SPK Playback Switch", ALC5632_VOICE_DAC_VOL, 14, 1, 1),
|
|
|
|
|
|
/* Left Record Mixer */
|
|
|
static const struct snd_kcontrol_new alc5632_captureL_mixer_controls[] = {
|
|
|
-SOC_DAPM_SINGLE("Mic1 Capture Switch", ALC5632_ADC_REC_MIXER, 14, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("Mic2 Capture Switch", ALC5632_ADC_REC_MIXER, 13, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("LineInL Capture Switch", ALC5632_ADC_REC_MIXER, 12, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("Left Phone Capture Switch", ALC5632_ADC_REC_MIXER, 11, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("HPMixerL Capture Switch", ALC5632_ADC_REC_MIXER, 10, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("SPKMixer Capture Switch", ALC5632_ADC_REC_MIXER, 9, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("MonoMixer Capture Switch", ALC5632_ADC_REC_MIXER, 8, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MIC12REC_L Capture Switch", ALC5632_ADC_REC_MIXER, 14, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MIC22REC_L Capture Switch", ALC5632_ADC_REC_MIXER, 13, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("LIL2REC Capture Switch", ALC5632_ADC_REC_MIXER, 12, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("PH2REC_L Capture Switch", ALC5632_ADC_REC_MIXER, 11, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("HPL2REC Capture Switch", ALC5632_ADC_REC_MIXER, 10, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("SPK2REC_L Capture Switch", ALC5632_ADC_REC_MIXER, 9, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MONO2REC_L Capture Switch", ALC5632_ADC_REC_MIXER, 8, 1, 1),
|
|
|
};
|
|
|
|
|
|
/* Right Record Mixer */
|
|
|
static const struct snd_kcontrol_new alc5632_captureR_mixer_controls[] = {
|
|
|
-SOC_DAPM_SINGLE("Mic1 Capture Switch", ALC5632_ADC_REC_MIXER, 6, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("Mic2 Capture Switch", ALC5632_ADC_REC_MIXER, 5, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("LineInR Capture Switch", ALC5632_ADC_REC_MIXER, 4, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("Right Phone Capture Switch", ALC5632_ADC_REC_MIXER, 3, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("HPMixerR Capture Switch", ALC5632_ADC_REC_MIXER, 2, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("SPKMixer Capture Switch", ALC5632_ADC_REC_MIXER, 1, 1, 1),
|
|
|
-SOC_DAPM_SINGLE("MonoMixer Capture Switch", ALC5632_ADC_REC_MIXER, 0, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MIC12REC_R Capture Switch", ALC5632_ADC_REC_MIXER, 6, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MIC22REC_R Capture Switch", ALC5632_ADC_REC_MIXER, 5, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("LIR2REC Capture Switch", ALC5632_ADC_REC_MIXER, 4, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("PH2REC_R Capture Switch", ALC5632_ADC_REC_MIXER, 3, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("HPR2REC Capture Switch", ALC5632_ADC_REC_MIXER, 2, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("SPK2REC_R Capture Switch", ALC5632_ADC_REC_MIXER, 1, 1, 1),
|
|
|
+SOC_DAPM_SINGLE("MONO2REC_R Capture Switch", ALC5632_ADC_REC_MIXER, 0, 1, 1),
|
|
|
};
|
|
|
|
|
|
-static const char *alc5632_spk_n_sour_sel[] = {
|
|
|
+/* Dmic Mixer */
|
|
|
+static const struct snd_kcontrol_new alc5632_dmicl_mixer_controls[] = {
|
|
|
+SOC_DAPM_SINGLE("DMICL2ADC Capture Switch", ALC5632_DIGI_BOOST_CTRL, 7, 1, 1),
|
|
|
+};
|
|
|
+static const struct snd_kcontrol_new alc5632_dmicr_mixer_controls[] = {
|
|
|
+SOC_DAPM_SINGLE("DMICR2ADC Capture Switch", ALC5632_DIGI_BOOST_CTRL, 6, 1, 1),
|
|
|
+};
|
|
|
+
|
|
|
+static const char * const alc5632_spk_n_sour_sel[] = {
|
|
|
"RN/-R", "RP/+R", "LN/-R", "Mute"};
|
|
|
-static const char *alc5632_hpl_out_input_sel[] = {
|
|
|
+static const char * const alc5632_hpl_out_input_sel[] = {
|
|
|
"Vmid", "HP Left Mix"};
|
|
|
-static const char *alc5632_hpr_out_input_sel[] = {
|
|
|
+static const char * const alc5632_hpr_out_input_sel[] = {
|
|
|
"Vmid", "HP Right Mix"};
|
|
|
-static const char *alc5632_spkout_input_sel[] = {
|
|
|
+static const char * const alc5632_spkout_input_sel[] = {
|
|
|
"Vmid", "HPOut Mix", "Speaker Mix", "Mono Mix"};
|
|
|
-static const char *alc5632_aux_out_input_sel[] = {
|
|
|
+static const char * const alc5632_aux_out_input_sel[] = {
|
|
|
"Vmid", "HPOut Mix", "Speaker Mix", "Mono Mix"};
|
|
|
+static const char * const alc5632_adcr_func_sel[] = {
|
|
|
+ "Stereo ADC", "Voice ADC"};
|
|
|
+static const char * const alc5632_i2s_out_sel[] = {
|
|
|
+ "ADC LR", "Voice Stereo Digital"};
|
|
|
|
|
|
/* auxout output mux */
|
|
|
static const struct soc_enum alc5632_aux_out_input_enum =
|
|
@@ -312,6 +329,17 @@ static const struct soc_enum alc5632_amp_enum =
|
|
|
static const struct snd_kcontrol_new alc5632_amp_mux_controls =
|
|
|
SOC_DAPM_ENUM("AB-D Amp Mux", alc5632_amp_enum);
|
|
|
|
|
|
+/* ADC output select */
|
|
|
+static const struct soc_enum alc5632_adcr_func_enum =
|
|
|
+ SOC_ENUM_SINGLE(ALC5632_DAC_FUNC_SELECT, 5, 2, alc5632_adcr_func_sel);
|
|
|
+static const struct snd_kcontrol_new alc5632_adcr_func_controls =
|
|
|
+ SOC_DAPM_ENUM("ADCR Mux", alc5632_adcr_func_enum);
|
|
|
+
|
|
|
+/* I2S out select */
|
|
|
+static const struct soc_enum alc5632_i2s_out_enum =
|
|
|
+ SOC_ENUM_SINGLE(ALC5632_I2S_OUT_CTL, 5, 2, alc5632_i2s_out_sel);
|
|
|
+static const struct snd_kcontrol_new alc5632_i2s_out_controls =
|
|
|
+ SOC_DAPM_ENUM("I2SOut Mux", alc5632_i2s_out_enum);
|
|
|
|
|
|
static const struct snd_soc_dapm_widget alc5632_dapm_widgets[] = {
|
|
|
/* Muxes */
|
|
@@ -325,6 +353,10 @@ SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0,
|
|
|
&alc5632_hpr_out_mux_controls),
|
|
|
SND_SOC_DAPM_MUX("SpeakerOut N Mux", SND_SOC_NOPM, 0, 0,
|
|
|
&alc5632_spkoutn_mux_controls),
|
|
|
+SND_SOC_DAPM_MUX("ADCR Mux", SND_SOC_NOPM, 0, 0,
|
|
|
+ &alc5632_adcr_func_controls),
|
|
|
+SND_SOC_DAPM_MUX("I2SOut Mux", ALC5632_PWR_MANAG_ADD1, 11, 0,
|
|
|
+ &alc5632_i2s_out_controls),
|
|
|
|
|
|
/* output mixers */
|
|
|
SND_SOC_DAPM_MIXER("HP Mix", SND_SOC_NOPM, 0, 0,
|
|
@@ -343,6 +375,12 @@ SND_SOC_DAPM_MIXER("Mono Mix", ALC5632_PWR_MANAG_ADD2, 2, 0,
|
|
|
SND_SOC_DAPM_MIXER("Speaker Mix", ALC5632_PWR_MANAG_ADD2, 3, 0,
|
|
|
&alc5632_speaker_mixer_controls[0],
|
|
|
ARRAY_SIZE(alc5632_speaker_mixer_controls)),
|
|
|
+SND_SOC_DAPM_MIXER("DMICL Mix", SND_SOC_NOPM, 0, 0,
|
|
|
+ &alc5632_dmicl_mixer_controls[0],
|
|
|
+ ARRAY_SIZE(alc5632_dmicl_mixer_controls)),
|
|
|
+SND_SOC_DAPM_MIXER("DMICR Mix", SND_SOC_NOPM, 0, 0,
|
|
|
+ &alc5632_dmicr_mixer_controls[0],
|
|
|
+ ARRAY_SIZE(alc5632_dmicr_mixer_controls)),
|
|
|
|
|
|
/* input mixers */
|
|
|
SND_SOC_DAPM_MIXER("Left Capture Mix", ALC5632_PWR_MANAG_ADD2, 1, 0,
|
|
@@ -352,20 +390,28 @@ SND_SOC_DAPM_MIXER("Right Capture Mix", ALC5632_PWR_MANAG_ADD2, 0, 0,
|
|
|
&alc5632_captureR_mixer_controls[0],
|
|
|
ARRAY_SIZE(alc5632_captureR_mixer_controls)),
|
|
|
|
|
|
-SND_SOC_DAPM_DAC("Left DAC", "HiFi Playback",
|
|
|
- ALC5632_PWR_MANAG_ADD2, 9, 0),
|
|
|
-SND_SOC_DAPM_DAC("Right DAC", "HiFi Playback",
|
|
|
- ALC5632_PWR_MANAG_ADD2, 8, 0),
|
|
|
+SND_SOC_DAPM_AIF_IN("AIFRXL", "Left HiFi Playback", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+SND_SOC_DAPM_AIF_IN("AIFRXR", "Right HiFi Playback", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+SND_SOC_DAPM_AIF_OUT("AIFTXL", "Left HiFi Capture", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+SND_SOC_DAPM_AIF_OUT("AIFTXR", "Right HiFi Capture", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+SND_SOC_DAPM_AIF_IN("VAIFRX", "Voice Playback", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+SND_SOC_DAPM_AIF_OUT("VAIFTX", "Voice Capture", 0, SND_SOC_NOPM, 0, 0),
|
|
|
+
|
|
|
+SND_SOC_DAPM_DAC("Voice DAC", NULL, ALC5632_PWR_MANAG_ADD2, 10, 0),
|
|
|
+SND_SOC_DAPM_DAC("Left DAC", NULL, ALC5632_PWR_MANAG_ADD2, 9, 0),
|
|
|
+SND_SOC_DAPM_DAC("Right DAC", NULL, ALC5632_PWR_MANAG_ADD2, 8, 0),
|
|
|
+SND_SOC_DAPM_ADC("Left ADC", NULL, ALC5632_PWR_MANAG_ADD2, 7, 0),
|
|
|
+SND_SOC_DAPM_ADC("Right ADC", NULL, ALC5632_PWR_MANAG_ADD2, 6, 0),
|
|
|
+
|
|
|
SND_SOC_DAPM_MIXER("DAC Left Channel", ALC5632_PWR_MANAG_ADD1, 15, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_MIXER("DAC Right Channel",
|
|
|
ALC5632_PWR_MANAG_ADD1, 14, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_MIXER("I2S Mix", ALC5632_PWR_MANAG_ADD1, 11, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_MIXER("Phone Mix", SND_SOC_NOPM, 0, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_MIXER("Line Mix", SND_SOC_NOPM, 0, 0, NULL, 0),
|
|
|
-SND_SOC_DAPM_ADC("Left ADC", "HiFi Capture",
|
|
|
- ALC5632_PWR_MANAG_ADD2, 7, 0),
|
|
|
-SND_SOC_DAPM_ADC("Right ADC", "HiFi Capture",
|
|
|
- ALC5632_PWR_MANAG_ADD2, 6, 0),
|
|
|
+SND_SOC_DAPM_MIXER("Voice Mix", SND_SOC_NOPM, 0, 0, NULL, 0),
|
|
|
+SND_SOC_DAPM_MIXER("ADCLR", SND_SOC_NOPM, 0, 0, NULL, 0),
|
|
|
+
|
|
|
SND_SOC_DAPM_PGA("Left Headphone", ALC5632_PWR_MANAG_ADD3, 11, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_PGA("Right Headphone", ALC5632_PWR_MANAG_ADD3, 10, 0, NULL, 0),
|
|
|
SND_SOC_DAPM_PGA("Left Speaker", ALC5632_PWR_MANAG_ADD3, 13, 0, NULL, 0),
|
|
@@ -393,10 +439,12 @@ SND_SOC_DAPM_OUTPUT("HPL"),
|
|
|
SND_SOC_DAPM_OUTPUT("HPR"),
|
|
|
SND_SOC_DAPM_OUTPUT("SPKOUT"),
|
|
|
SND_SOC_DAPM_OUTPUT("SPKOUTN"),
|
|
|
+
|
|
|
SND_SOC_DAPM_INPUT("LINEINL"),
|
|
|
SND_SOC_DAPM_INPUT("LINEINR"),
|
|
|
SND_SOC_DAPM_INPUT("PHONEP"),
|
|
|
SND_SOC_DAPM_INPUT("PHONEN"),
|
|
|
+SND_SOC_DAPM_INPUT("DMICDAT"),
|
|
|
SND_SOC_DAPM_INPUT("MIC1"),
|
|
|
SND_SOC_DAPM_INPUT("MIC2"),
|
|
|
SND_SOC_DAPM_VMID("Vmid"),
|
|
@@ -404,6 +452,10 @@ SND_SOC_DAPM_VMID("Vmid"),
|
|
|
|
|
|
|
|
|
static const struct snd_soc_dapm_route alc5632_dapm_routes[] = {
|
|
|
+ /* Playback streams */
|
|
|
+ {"Left DAC", NULL, "AIFRXL"},
|
|
|
+ {"Right DAC", NULL, "AIFRXR"},
|
|
|
+
|
|
|
/* virtual mixer - mixes left & right channels */
|
|
|
{"I2S Mix", NULL, "Left DAC"},
|
|
|
{"I2S Mix", NULL, "Right DAC"},
|
|
@@ -426,9 +478,12 @@ static const struct snd_soc_dapm_route alc5632_dapm_routes[] = {
|
|
|
{"HP Mix", "PHONE2HP Playback Switch", "Phone Mix"},
|
|
|
{"HP Mix", "MIC12HP Playback Switch", "MIC1 PGA"},
|
|
|
{"HP Mix", "MIC22HP Playback Switch", "MIC2 PGA"},
|
|
|
-
|
|
|
+ {"HP Mix", "VOICE2HP Playback Switch", "Voice Mix"},
|
|
|
{"HPR Mix", "DACR2HP Playback Switch", "DAC Right Channel"},
|
|
|
{"HPL Mix", "DACL2HP Playback Switch", "DAC Left Channel"},
|
|
|
+ {"HPOut Mix", NULL, "HP Mix"},
|
|
|
+ {"HPOut Mix", NULL, "HPR Mix"},
|
|
|
+ {"HPOut Mix", NULL, "HPL Mix"},
|
|
|
|
|
|
/* speaker mixer */
|
|
|
{"Speaker Mix", "LI2SPK Playback Switch", "Line Mix"},
|
|
@@ -436,35 +491,34 @@ static const struct snd_soc_dapm_route alc5632_dapm_routes[] = {
|
|
|
{"Speaker Mix", "MIC12SPK Playback Switch", "MIC1 PGA"},
|
|
|
{"Speaker Mix", "MIC22SPK Playback Switch", "MIC2 PGA"},
|
|
|
{"Speaker Mix", "DAC2SPK Playback Switch", "DAC Left Channel"},
|
|
|
-
|
|
|
-
|
|
|
+ {"Speaker Mix", "VOICE2SPK Playback Switch", "Voice Mix"},
|
|
|
|
|
|
/* mono mixer */
|
|
|
{"Mono Mix", "ADC2MONO_L Playback Switch", "Left Capture Mix"},
|
|
|
{"Mono Mix", "ADC2MONO_R Playback Switch", "Right Capture Mix"},
|
|
|
{"Mono Mix", "LI2MONO Playback Switch", "Line Mix"},
|
|
|
- {"Mono Mix", "VOICE2MONO Playback Switch", "Phone Mix"},
|
|
|
{"Mono Mix", "MIC12MONO Playback Switch", "MIC1 PGA"},
|
|
|
{"Mono Mix", "MIC22MONO Playback Switch", "MIC2 PGA"},
|
|
|
{"Mono Mix", "DAC2MONO Playback Switch", "DAC Left Channel"},
|
|
|
+ {"Mono Mix", "VOICE2MONO Playback Switch", "Voice Mix"},
|
|
|
|
|
|
/* Left record mixer */
|
|
|
- {"Left Capture Mix", "LineInL Capture Switch", "LINEINL"},
|
|
|
- {"Left Capture Mix", "Left Phone Capture Switch", "PHONEN"},
|
|
|
- {"Left Capture Mix", "Mic1 Capture Switch", "MIC1 Pre Amp"},
|
|
|
- {"Left Capture Mix", "Mic2 Capture Switch", "MIC2 Pre Amp"},
|
|
|
- {"Left Capture Mix", "HPMixerL Capture Switch", "HPL Mix"},
|
|
|
- {"Left Capture Mix", "SPKMixer Capture Switch", "Speaker Mix"},
|
|
|
- {"Left Capture Mix", "MonoMixer Capture Switch", "Mono Mix"},
|
|
|
+ {"Left Capture Mix", "LIL2REC Capture Switch", "LINEINL"},
|
|
|
+ {"Left Capture Mix", "PH2REC_L Capture Switch", "PHONEN"},
|
|
|
+ {"Left Capture Mix", "MIC12REC_L Capture Switch", "MIC1 Pre Amp"},
|
|
|
+ {"Left Capture Mix", "MIC22REC_L Capture Switch", "MIC2 Pre Amp"},
|
|
|
+ {"Left Capture Mix", "HPL2REC Capture Switch", "HPL Mix"},
|
|
|
+ {"Left Capture Mix", "SPK2REC_L Capture Switch", "Speaker Mix"},
|
|
|
+ {"Left Capture Mix", "MONO2REC_L Capture Switch", "Mono Mix"},
|
|
|
|
|
|
/*Right record mixer */
|
|
|
- {"Right Capture Mix", "LineInR Capture Switch", "LINEINR"},
|
|
|
- {"Right Capture Mix", "Right Phone Capture Switch", "PHONEP"},
|
|
|
- {"Right Capture Mix", "Mic1 Capture Switch", "MIC1 Pre Amp"},
|
|
|
- {"Right Capture Mix", "Mic2 Capture Switch", "MIC2 Pre Amp"},
|
|
|
- {"Right Capture Mix", "HPMixerR Capture Switch", "HPR Mix"},
|
|
|
- {"Right Capture Mix", "SPKMixer Capture Switch", "Speaker Mix"},
|
|
|
- {"Right Capture Mix", "MonoMixer Capture Switch", "Mono Mix"},
|
|
|
+ {"Right Capture Mix", "LIR2REC Capture Switch", "LINEINR"},
|
|
|
+ {"Right Capture Mix", "PH2REC_R Capture Switch", "PHONEP"},
|
|
|
+ {"Right Capture Mix", "MIC12REC_R Capture Switch", "MIC1 Pre Amp"},
|
|
|
+ {"Right Capture Mix", "MIC22REC_R Capture Switch", "MIC2 Pre Amp"},
|
|
|
+ {"Right Capture Mix", "HPR2REC Capture Switch", "HPR Mix"},
|
|
|
+ {"Right Capture Mix", "SPK2REC_R Capture Switch", "Speaker Mix"},
|
|
|
+ {"Right Capture Mix", "MONO2REC_R Capture Switch", "Mono Mix"},
|
|
|
|
|
|
/* headphone left mux */
|
|
|
{"Left Headphone Mux", "HP Left Mix", "HPL Mix"},
|
|
@@ -504,10 +558,30 @@ static const struct snd_soc_dapm_route alc5632_dapm_routes[] = {
|
|
|
|
|
|
/* left ADC */
|
|
|
{"Left ADC", NULL, "Left Capture Mix"},
|
|
|
+ {"DMICL Mix", "DMICL2ADC Capture Switch", "DMICDAT"},
|
|
|
+ {"Left ADC", NULL, "DMICL Mix"},
|
|
|
+ {"ADCLR", NULL, "Left ADC"},
|
|
|
|
|
|
/* right ADC */
|
|
|
- {"Right ADC", NULL, "Right Capture Mix"},
|
|
|
-
|
|
|
+ {"Right ADC", NULL, "Right Capture Mix"},
|
|
|
+ {"DMICR Mix", "DMICR2ADC Capture Switch", "DMICDAT"},
|
|
|
+ {"Right ADC", NULL, "DMICR Mix"},
|
|
|
+ {"ADCR Mux", "Stereo ADC", "Right ADC"},
|
|
|
+ {"ADCR Mux", "Voice ADC", "Right ADC"},
|
|
|
+ {"ADCLR", NULL, "ADCR Mux"},
|
|
|
+ {"VAIFTX", NULL, "ADCR Mux"},
|
|
|
+
|
|
|
+ /* Digital I2S out */
|
|
|
+ {"I2SOut Mux", "ADC LR", "ADCLR"},
|
|
|
+ {"I2SOut Mux", "Voice Stereo Digital", "VAIFRX"},
|
|
|
+ {"AIFTXL", NULL, "I2SOut Mux"},
|
|
|
+ {"AIFTXR", NULL, "I2SOut Mux"},
|
|
|
+
|
|
|
+ /* Voice Mix */
|
|
|
+ {"Voice DAC", NULL, "VAIFRX"},
|
|
|
+ {"Voice Mix", NULL, "Voice DAC"},
|
|
|
+
|
|
|
+ /* Speaker Output */
|
|
|
{"SpeakerOut N Mux", "RN/-R", "Left Speaker"},
|
|
|
{"SpeakerOut N Mux", "RP/+R", "Left Speaker"},
|
|
|
{"SpeakerOut N Mux", "LN/-R", "Left Speaker"},
|
|
@@ -714,6 +788,7 @@ static int alc5632_set_dai_sysclk(struct snd_soc_dai *codec_dai,
|
|
|
struct alc5632_priv *alc5632 = snd_soc_codec_get_drvdata(codec);
|
|
|
|
|
|
switch (freq) {
|
|
|
+ case 4096000:
|
|
|
case 8192000:
|
|
|
case 11289600:
|
|
|
case 12288000:
|
|
@@ -994,7 +1069,7 @@ static int alc5632_probe(struct snd_soc_codec *codec)
|
|
|
|
|
|
switch (alc5632->id) {
|
|
|
case 0x5c:
|
|
|
- snd_soc_add_controls(codec, alc5632_vol_snd_controls,
|
|
|
+ snd_soc_add_codec_controls(codec, alc5632_vol_snd_controls,
|
|
|
ARRAY_SIZE(alc5632_vol_snd_controls));
|
|
|
break;
|
|
|
default:
|
|
@@ -1109,7 +1184,7 @@ static __devinit int alc5632_i2c_probe(struct i2c_client *client,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int alc5632_i2c_remove(struct i2c_client *client)
|
|
|
+static __devexit int alc5632_i2c_remove(struct i2c_client *client)
|
|
|
{
|
|
|
struct alc5632_priv *alc5632 = i2c_get_clientdata(client);
|
|
|
snd_soc_unregister_codec(&client->dev);
|