diff mbox

[3/3] ASoC: Intel: Select RT5672 ASRC clock source on Cherrytrail and Braswell

Message ID b176b6f0b481a4f8a576d4921b92a4ed62ddc87a.1420451186.git.mengdong.lin@intel.com (mailing list archive)
State Accepted
Commit eb55fab997c0bf1b1ddf0a7199da0ceb18432b96
Headers show

Commit Message

Lin, Mengdong Jan. 5, 2015, 9:48 a.m. UTC
From: Mengdong Lin <mengdong.lin@intel.com>

On Cherrytrail and Braswell, the I2S BCLK is 100FS which cannot be supported
by RT5670 in slave mode and can cause noise.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
diff mbox

Patch

diff --git a/sound/soc/intel/cht_bsw_rt5672.c b/sound/soc/intel/cht_bsw_rt5672.c
index 9b8b561..54a8f72 100644
--- a/sound/soc/intel/cht_bsw_rt5672.c
+++ b/sound/soc/intel/cht_bsw_rt5672.c
@@ -140,6 +140,7 @@  static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
 {
 	int ret;
 	struct snd_soc_dai *codec_dai = runtime->codec_dai;
+	struct snd_soc_codec *codec = codec_dai->codec;
 
 	/* TDM 4 slots 24 bit, set Rx & Tx bitmask to 4 active slots */
 	ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xF, 0xF, 4, 24);
@@ -148,6 +149,19 @@  static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
 		return ret;
 	}
 
+	/* Select codec ASRC clock source to track I2S1 clock, because codec
+	 * is in slave mode and 100fs I2S format (BCLK = 100 * LRCLK) cannot
+	 * be supported by RT5672. Otherwise, ASRC will be disabled and cause
+	 * noise.
+	 */
+	rt5670_sel_asrc_clk_src(codec,
+				RT5670_DA_STEREO_FILTER
+				| RT5670_DA_MONO_L_FILTER
+				| RT5670_DA_MONO_R_FILTER
+				| RT5670_AD_STEREO_FILTER
+				| RT5670_AD_MONO_L_FILTER
+				| RT5670_AD_MONO_R_FILTER,
+				RT5670_CLK_SEL_I2S1_ASRC);
 	return 0;
 }