audio: support 48k out & 16k loopback [1/1]

PD#SWPL-7741

Problem:
Enable the loopback function.
Fix 48k output & 16k loopback abnormal.

Solution:
Fix the resample source.
DO not touch output clk at loopback driver.

Verify:
Sm1, AC213

Change-Id: I210083813e9e6ec834941da333f8ce076e9afbcf
Signed-off-by: Shuai Li <shuai.li@amlogic.com>
This commit is contained in:
Shuai Li
2019-05-10 13:51:43 +08:00
committed by Luke Go
parent ab2e2f9786
commit 6e25ccd91d

View File

@@ -370,7 +370,7 @@ static void datain_pdm_shutdown(struct loopback *p_loopback)
clk_disable_unprepare(p_loopback->pdm_dclk_srcpll);
clk_disable_unprepare(p_loopback->pdm_clk_gate);
}
#if 0
static int tdminlb_startup(struct loopback *p_loopback)
{
int ret;
@@ -400,7 +400,7 @@ static void tdminlb_shutdown(struct loopback *p_loopback)
clk_disable_unprepare(p_loopback->tdminlb_mclk);
clk_disable_unprepare(p_loopback->tdminlb_mpll);
}
#endif
static int loopback_dai_startup(
struct snd_pcm_substream *ss,
struct snd_soc_dai *dai)
@@ -492,8 +492,8 @@ static void loopback_dai_shutdown(
static void loopback_set_clk(struct loopback *p_loopback,
int rate, bool enable)
{
unsigned int mul = 2;
unsigned int mpll_freq, mclk_freq;
/* unsigned int mul = 2; */
/* unsigned int mpll_freq, mclk_freq; */
/* assume datain_lb in i2s format, 2ch, 32bit */
unsigned int bit_depth = 32, i2s_ch = 2;
unsigned int sclk_div = 4 - 1;
@@ -502,7 +502,7 @@ static void loopback_set_clk(struct loopback *p_loopback,
/* lb_datain clk is set
* prepare clocks for tdmin_lb
*/
#if 0
/* mpll, mclk */
if (p_loopback->datalb_src >= 3) {
mclk_freq = rate * p_loopback->mclk_fs_ratio;
@@ -517,7 +517,7 @@ static void loopback_set_clk(struct loopback *p_loopback,
clk_get_rate(p_loopback->tdminlb_mclk),
clk_get_rate(p_loopback->tdminlb_mpll));
}
#endif
#ifdef __PTM_TDM_CLK__
ratio = 18 * 2;
#endif
@@ -847,7 +847,7 @@ static void datain_pdm_set_clk(struct loopback *p_loopback)
clk_get_rate(p_loopback->pdm_sysclk),
clk_get_rate(p_loopback->pdm_dclk));
}
#if 0
static void datalb_tdminlb_set_clk(struct loopback *p_loopback)
{
int mpll_freq = p_loopback->sysclk_freq * 2;
@@ -859,7 +859,7 @@ static void datalb_tdminlb_set_clk(struct loopback *p_loopback)
clk_get_rate(p_loopback->tdminlb_mpll),
clk_get_rate(p_loopback->tdminlb_mclk));
}
#endif
static int loopback_dai_hw_params(
struct snd_pcm_substream *ss,
struct snd_pcm_hw_params *params,