diff options
Diffstat (limited to 'sound/soc/codecs/88pm860x-codec.c')
-rw-r--r-- | sound/soc/codecs/88pm860x-codec.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sound/soc/codecs/88pm860x-codec.c b/sound/soc/codecs/88pm860x-codec.c index 19241576b6b..5ca122e5118 100644 --- a/sound/soc/codecs/88pm860x-codec.c +++ b/sound/soc/codecs/88pm860x-codec.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/mfd/88pm860x.h> | 16 | #include <linux/mfd/88pm860x.h> |
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/delay.h> | ||
18 | #include <sound/core.h> | 19 | #include <sound/core.h> |
19 | #include <sound/pcm.h> | 20 | #include <sound/pcm.h> |
20 | #include <sound/pcm_params.h> | 21 | #include <sound/pcm_params.h> |
@@ -772,11 +773,12 @@ static const struct snd_soc_dapm_widget pm860x_dapm_widgets[] = { | |||
772 | 773 | ||
773 | 774 | ||
774 | SND_SOC_DAPM_AIF_IN("I2S DIN", "I2S Playback", 0, | 775 | SND_SOC_DAPM_AIF_IN("I2S DIN", "I2S Playback", 0, |
775 | PM860X_DAC_EN_2, 0, 0), | 776 | SND_SOC_NOPM, 0, 0), |
776 | SND_SOC_DAPM_AIF_IN("I2S DIN1", "I2S Playback", 0, | 777 | SND_SOC_DAPM_AIF_IN("I2S DIN1", "I2S Playback", 0, |
777 | PM860X_DAC_EN_2, 0, 0), | 778 | SND_SOC_NOPM, 0, 0), |
778 | SND_SOC_DAPM_AIF_OUT("I2S DOUT", "I2S Capture", 0, | 779 | SND_SOC_DAPM_AIF_OUT("I2S DOUT", "I2S Capture", 0, |
779 | PM860X_I2S_IFACE_3, 5, 1), | 780 | PM860X_I2S_IFACE_3, 5, 1), |
781 | SND_SOC_DAPM_SUPPLY("I2S CLK", PM860X_DAC_EN_2, 0, 0, NULL, 0), | ||
780 | SND_SOC_DAPM_MUX("I2S Mic Mux", SND_SOC_NOPM, 0, 0, &i2s_mic_mux), | 782 | SND_SOC_DAPM_MUX("I2S Mic Mux", SND_SOC_NOPM, 0, 0, &i2s_mic_mux), |
781 | SND_SOC_DAPM_MUX("ADC Left Mux", SND_SOC_NOPM, 0, 0, &adcl_mux), | 783 | SND_SOC_DAPM_MUX("ADC Left Mux", SND_SOC_NOPM, 0, 0, &adcl_mux), |
782 | SND_SOC_DAPM_MUX("ADC Right Mux", SND_SOC_NOPM, 0, 0, &adcr_mux), | 784 | SND_SOC_DAPM_MUX("ADC Right Mux", SND_SOC_NOPM, 0, 0, &adcr_mux), |
@@ -868,6 +870,11 @@ static const struct snd_soc_dapm_route audio_map[] = { | |||
868 | {"Left ADC", NULL, "Left ADC MOD"}, | 870 | {"Left ADC", NULL, "Left ADC MOD"}, |
869 | {"Right ADC", NULL, "Right ADC MOD"}, | 871 | {"Right ADC", NULL, "Right ADC MOD"}, |
870 | 872 | ||
873 | /* I2S Clock */ | ||
874 | {"I2S DIN", NULL, "I2S CLK"}, | ||
875 | {"I2S DIN1", NULL, "I2S CLK"}, | ||
876 | {"I2S DOUT", NULL, "I2S CLK"}, | ||
877 | |||
871 | /* PCM/AIF1 Inputs */ | 878 | /* PCM/AIF1 Inputs */ |
872 | {"PCM SDO", NULL, "ADC Left Mux"}, | 879 | {"PCM SDO", NULL, "ADC Left Mux"}, |
873 | {"PCM SDO", NULL, "ADCR EC Mux"}, | 880 | {"PCM SDO", NULL, "ADCR EC Mux"}, |
@@ -1173,6 +1180,9 @@ static int pm860x_set_bias_level(struct snd_soc_codec *codec, | |||
1173 | case SND_SOC_BIAS_STANDBY: | 1180 | case SND_SOC_BIAS_STANDBY: |
1174 | if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { | 1181 | if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { |
1175 | /* Enable Audio PLL & Audio section */ | 1182 | /* Enable Audio PLL & Audio section */ |
1183 | data = AUDIO_PLL | AUDIO_SECTION_ON; | ||
1184 | pm860x_reg_write(codec->control_data, REG_MISC2, data); | ||
1185 | udelay(300); | ||
1176 | data = AUDIO_PLL | AUDIO_SECTION_RESET | 1186 | data = AUDIO_PLL | AUDIO_SECTION_RESET |
1177 | | AUDIO_SECTION_ON; | 1187 | | AUDIO_SECTION_ON; |
1178 | pm860x_reg_write(codec->control_data, REG_MISC2, data); | 1188 | pm860x_reg_write(codec->control_data, REG_MISC2, data); |