sound: resove external loopback for 2ch pdm + 2ch loopback on axg
authorPeipeng Zhao <peipeng.zhao@amlogic.com>
Sun, 11 Feb 2018 07:07:19 +0000 (15:07 +0800)
committerPeipeng Zhao <peipeng.zhao@amlogic.com>
Sun, 11 Feb 2018 07:14:43 +0000 (15:14 +0800)
PD#160814: sound: resove external loopback for 2ch pdm + 2ch loopback

Change-Id: I7a558dcc3850d4d174faa3c9259394b78bf8f45b
Signed-off-by: Peipeng Zhao <peipeng.zhao@amlogic.com>
sound/soc/amlogic/auge/audio_utils.c

index d747d24..a034b3b 100644 (file)
@@ -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),