diff options
Diffstat (limited to 'sound/soc/codecs/adau17x1.c')
| -rw-r--r-- | sound/soc/codecs/adau17x1.c | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/sound/soc/codecs/adau17x1.c b/sound/soc/codecs/adau17x1.c index 12bf24c26818..ae41edd1c406 100644 --- a/sound/soc/codecs/adau17x1.c +++ b/sound/soc/codecs/adau17x1.c @@ -843,6 +843,15 @@ int adau17x1_setup_firmware(struct snd_soc_component *component,  	struct adau *adau = snd_soc_component_get_drvdata(component);  	struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); +	/* Check if sample rate is the same as before. If it is there is no +	 * point in performing the below steps as the call to +	 * sigmadsp_setup(...) will return directly when it finds the sample +	 * rate to be the same as before. By checking this we can prevent an +	 * audiable popping noise which occours when toggling DSP_RUN. +	 */ +	if (adau->sigmadsp->current_samplerate == rate) +		return 0; +  	snd_soc_dapm_mutex_lock(dapm);  	ret = regmap_read(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, &dspsr); |