From e4341e80c1bea2f95fd415d113aa579eb6d20814 Mon Sep 17 00:00:00 2001 From: Peipeng Zhao Date: Sun, 11 Feb 2018 15:07:19 +0800 Subject: [PATCH] sound: resove external loopback for 2ch pdm + 2ch loopback on axg PD#160814: sound: resove external loopback for 2ch pdm + 2ch loopback Change-Id: I7a558dcc3850d4d174faa3c9259394b78bf8f45b Signed-off-by: Peipeng Zhao --- sound/soc/amlogic/auge/audio_utils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/amlogic/auge/audio_utils.c b/sound/soc/amlogic/auge/audio_utils.c index d747d24c426b..a034b3b9ff85 100644 --- a/sound/soc/amlogic/auge/audio_utils.c +++ b/sound/soc/amlogic/auge/audio_utils.c @@ -1023,11 +1023,18 @@ int loopback_hw_params(struct snd_pcm_substream *substream, /*for i2s mode*/ unsigned int sclk_div = 4 - 1; unsigned int ratio = params_channels(params) * bit_depth - 1; - unsigned int fsclk_hi = ratio / 2; + unsigned int fsclk_hi; unsigned int clk_id = lb_cfg->datalb_src - 3; unsigned int mul = 2; unsigned int mpll_freq, offset, reg; + /*lrclk sclk depend on default 8ch setting,*/ + /* so if num of channels is 4, to change ratio*/ + if (params_channels(params) == 4) + ratio = ratio*2; + + fsclk_hi = ratio/2; + pr_info("%s, channels:%d, format:%d, ratio:%d\n", __func__, params_channels(params),