Loading sound/soc/codecs/adau17x1.c +23 −1 Original line number Diff line number Diff line Loading @@ -90,6 +90,27 @@ static int adau17x1_pll_event(struct snd_soc_dapm_widget *w, return 0; } static int adau17x1_adc_fixup(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); struct adau *adau = snd_soc_codec_get_drvdata(codec); /* * If we are capturing, toggle the ADOSR bit in Converter Control 0 to * avoid losing SNR (workaround from ADI). This must be done after * the ADC(s) have been enabled. According to the data sheet, it is * normally illegal to set this bit when the sampling rate is 96 kHz, * but according to ADI it is acceptable for this workaround. */ regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, ADAU17X1_CONVERTER0_ADOSR, ADAU17X1_CONVERTER0_ADOSR); regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, ADAU17X1_CONVERTER0_ADOSR, 0); return 0; } static const char * const adau17x1_mono_stereo_text[] = { "Stereo", "Mono Left Channel (L+R)", Loading Loading @@ -121,7 +142,8 @@ static const struct snd_soc_dapm_widget adau17x1_dapm_widgets[] = { SND_SOC_DAPM_MUX("Right DAC Mode Mux", SND_SOC_NOPM, 0, 0, &adau17x1_dac_mode_mux), SND_SOC_DAPM_ADC("Left Decimator", NULL, ADAU17X1_ADC_CONTROL, 0, 0), SND_SOC_DAPM_ADC_E("Left Decimator", NULL, ADAU17X1_ADC_CONTROL, 0, 0, adau17x1_adc_fixup, SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_ADC("Right Decimator", NULL, ADAU17X1_ADC_CONTROL, 1, 0), SND_SOC_DAPM_DAC("Left DAC", NULL, ADAU17X1_DAC_CONTROL0, 0, 0), SND_SOC_DAPM_DAC("Right DAC", NULL, ADAU17X1_DAC_CONTROL0, 1, 0), Loading sound/soc/codecs/adau17x1.h +2 −0 Original line number Diff line number Diff line Loading @@ -129,5 +129,7 @@ bool adau17x1_has_dsp(struct adau *adau); #define ADAU17X1_CONVERTER0_CONVSR_MASK 0x7 #define ADAU17X1_CONVERTER0_ADOSR BIT(3) #endif sound/soc/codecs/max98090.c +1 −1 Original line number Diff line number Diff line Loading @@ -2115,7 +2115,7 @@ static void max98090_pll_work(struct work_struct *work) if (!snd_soc_codec_is_active(codec)) return; dev_info(codec->dev, "PLL unlocked\n"); dev_info_ratelimited(codec->dev, "PLL unlocked\n"); /* Toggle shutdown OFF then ON */ snd_soc_update_bits(codec, M98090_REG_DEVICE_SHUTDOWN, Loading sound/soc/davinci/davinci-mcasp.c +4 −2 Original line number Diff line number Diff line Loading @@ -1982,8 +1982,10 @@ static int davinci_mcasp_probe(struct platform_device *pdev) GFP_KERNEL); if (!mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list || !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list) return -ENOMEM; !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list) { ret = -ENOMEM; goto err; } ret = davinci_mcasp_set_ch_constraints(mcasp); if (ret) Loading Loading
sound/soc/codecs/adau17x1.c +23 −1 Original line number Diff line number Diff line Loading @@ -90,6 +90,27 @@ static int adau17x1_pll_event(struct snd_soc_dapm_widget *w, return 0; } static int adau17x1_adc_fixup(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); struct adau *adau = snd_soc_codec_get_drvdata(codec); /* * If we are capturing, toggle the ADOSR bit in Converter Control 0 to * avoid losing SNR (workaround from ADI). This must be done after * the ADC(s) have been enabled. According to the data sheet, it is * normally illegal to set this bit when the sampling rate is 96 kHz, * but according to ADI it is acceptable for this workaround. */ regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, ADAU17X1_CONVERTER0_ADOSR, ADAU17X1_CONVERTER0_ADOSR); regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, ADAU17X1_CONVERTER0_ADOSR, 0); return 0; } static const char * const adau17x1_mono_stereo_text[] = { "Stereo", "Mono Left Channel (L+R)", Loading Loading @@ -121,7 +142,8 @@ static const struct snd_soc_dapm_widget adau17x1_dapm_widgets[] = { SND_SOC_DAPM_MUX("Right DAC Mode Mux", SND_SOC_NOPM, 0, 0, &adau17x1_dac_mode_mux), SND_SOC_DAPM_ADC("Left Decimator", NULL, ADAU17X1_ADC_CONTROL, 0, 0), SND_SOC_DAPM_ADC_E("Left Decimator", NULL, ADAU17X1_ADC_CONTROL, 0, 0, adau17x1_adc_fixup, SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_ADC("Right Decimator", NULL, ADAU17X1_ADC_CONTROL, 1, 0), SND_SOC_DAPM_DAC("Left DAC", NULL, ADAU17X1_DAC_CONTROL0, 0, 0), SND_SOC_DAPM_DAC("Right DAC", NULL, ADAU17X1_DAC_CONTROL0, 1, 0), Loading
sound/soc/codecs/adau17x1.h +2 −0 Original line number Diff line number Diff line Loading @@ -129,5 +129,7 @@ bool adau17x1_has_dsp(struct adau *adau); #define ADAU17X1_CONVERTER0_CONVSR_MASK 0x7 #define ADAU17X1_CONVERTER0_ADOSR BIT(3) #endif
sound/soc/codecs/max98090.c +1 −1 Original line number Diff line number Diff line Loading @@ -2115,7 +2115,7 @@ static void max98090_pll_work(struct work_struct *work) if (!snd_soc_codec_is_active(codec)) return; dev_info(codec->dev, "PLL unlocked\n"); dev_info_ratelimited(codec->dev, "PLL unlocked\n"); /* Toggle shutdown OFF then ON */ snd_soc_update_bits(codec, M98090_REG_DEVICE_SHUTDOWN, Loading
sound/soc/davinci/davinci-mcasp.c +4 −2 Original line number Diff line number Diff line Loading @@ -1982,8 +1982,10 @@ static int davinci_mcasp_probe(struct platform_device *pdev) GFP_KERNEL); if (!mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list || !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list) return -ENOMEM; !mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list) { ret = -ENOMEM; goto err; } ret = davinci_mcasp_set_ch_constraints(mcasp); if (ret) Loading