[alsa-devel] [PATCH] ASoC: Intel: Fix Kabylake machine driver for pops and clicks

Vinod Koul vinod.koul at intel.com
Wed Jul 26 06:47:24 CEST 2017


On Tue, Jul 25, 2017 at 03:27:39PM -0700, Harsha Priya wrote:
> This patch adds fixes for the following issues in Kabylake machine driver
> 
> 1. crackling noise in rt5663 headset codec 

And the fix was..?

> 2. enabling 4 slot IV feedback for max98927 speaker amp codec 

should that be a separate patch?

> 3. pop noise while recording from rt5514 dmic codec 

and this fix was..

Harsha, from the changelog, apart from 2, I am still not clear on the
contents of the patch. A patch changelog should document the code changes
done, its impact (done here) to help reviewer understand the patch

> 
> Signed-off-by: Harsha Priya <harshapriya.n at intel.com>
> ---
>  .../soc/intel/boards/kbl_rt5663_rt5514_max98927.c  | 28 ++++++++++++----------
>  1 file changed, 15 insertions(+), 13 deletions(-)
> 
> diff --git a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> index 3fe4a08..4c51965 100644
> --- a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> +++ b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
> @@ -319,7 +319,9 @@ static int kabylake_rt5663_hw_params(struct snd_pcm_substream *substream,
>  	int ret;
>  
>  	/* use ASRC for internal clocks, as PLL rate isn't multiple of BCLK */
> -	rt5663_sel_asrc_clk_src(codec_dai->codec, RT5663_DA_STEREO_FILTER, 1);
> +	rt5663_sel_asrc_clk_src(codec_dai->codec,
> +			RT5663_DA_STEREO_FILTER | RT5663_AD_STEREO_FILTER,
> +			RT5663_CLK_SEL_I2S1_ASRC);

So now the clock source is ARSC right, how will that fix something?

>  
>  	ret = snd_soc_dai_set_sysclk(codec_dai,
>  			RT5663_SCLK_S_MCLK, 24576000, SND_SOC_CLOCK_IN);
> @@ -349,27 +351,27 @@ static int kabylake_ssp0_hw_params(struct snd_pcm_substream *substream,
>  				return ret;
>  			}
>  
> -			ret = snd_soc_dai_set_pll(codec_dai, 0,
> -				RT5514_PLL1_S_BCLK, RT5514_AIF1_BCLK_FREQ,
> -						RT5514_AIF1_SYSCLK_FREQ);
> +			ret = snd_soc_dai_set_sysclk(codec_dai,
> +				RT5514_SCLK_S_MCLK, 24576000, SND_SOC_CLOCK_IN);

now you no longer need to set pll?

> +
>  			if (ret < 0) {
> -				dev_err(rtd->dev, "set bclk err: %d\n", ret);
> +				dev_err(rtd->dev, "set sysclk err: %d\n", ret);
>  				return ret;
>  			}
> +		}
>  
> -			ret = snd_soc_dai_set_sysclk(codec_dai,
> -				RT5514_SCLK_S_PLL1, RT5514_AIF1_SYSCLK_FREQ,
> -							SND_SOC_CLOCK_IN);
> +		if (!strcmp(codec_dai->component->name, MAXIM_DEV0_NAME)) {
> +			ret = snd_soc_dai_set_tdm_slot(codec_dai, 0x30, 3, 8, 16);
>  			if (ret < 0) {
> -				dev_err(rtd->dev, "set sclk err: %d\n", ret);
> +				dev_err(rtd->dev, "DEV0 TDM slot err:%d\n", ret);
>  				return ret;
>  			}
>  		}
> -		if (!strcmp(codec_dai->component->name, MAXIM_DEV0_NAME) ||
> -			!strcmp(codec_dai->component->name, MAXIM_DEV1_NAME)) {
> -			ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xF0, 3, 8, 16);
> +
> +		if (!strcmp(codec_dai->component->name, MAXIM_DEV1_NAME)) {
> +			ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xC0, 3, 8, 16);
>  			if (ret < 0) {
> -				dev_err(rtd->dev, "set TDM slot err:%d\n", ret);
> +				dev_err(rtd->dev, "DEV1 TDM slot err:%d\n", ret);
>  				return ret;
>  			}
>  		}

-- 
~Vinod


More information about the Alsa-devel mailing list