mirror of https://gitee.com/openkylin/linux.git
Merge remote-tracking branches 'asoc/fix/adau17x1', 'asoc/fix/davinci' and 'asoc/fix/max98090' into asoc-linus
This commit is contained in:
commit
39b540ec8d
|
@ -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)",
|
||||
|
@ -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),
|
||||
|
|
|
@ -129,5 +129,7 @@ bool adau17x1_has_dsp(struct adau *adau);
|
|||
|
||||
#define ADAU17X1_CONVERTER0_CONVSR_MASK 0x7
|
||||
|
||||
#define ADAU17X1_CONVERTER0_ADOSR BIT(3)
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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…
Reference in New Issue