diff options
Diffstat (limited to 'sound/soc/fsl/fsl_micfil.c')
-rw-r--r-- | sound/soc/fsl/fsl_micfil.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c index 22826d48244b..59efd823906f 100644 --- a/sound/soc/fsl/fsl_micfil.c +++ b/sound/soc/fsl/fsl_micfil.c @@ -1353,6 +1353,9 @@ static inline bool clk_in_list(struct clk *p, struct clk *clk_src[]) return false; } +#define CLK_8K_FREQ 24576000 +#define CLK_11K_FREQ 22579200 + static int fsl_micfil_set_mclk_rate(struct fsl_micfil *micfil, int clk_id, unsigned int freq) { @@ -1426,10 +1429,10 @@ static int fsl_micfil_set_mclk_rate(struct fsl_micfil *micfil, int clk_id, "failed to set parrent %d\n", ret); } - ret = clk_set_rate(micfil->mclk, freq * 1024); + clk_rate = freq % 8000 == 0 ? CLK_8K_FREQ : CLK_11K_FREQ; + ret = clk_set_rate(micfil->mclk, clk_rate); if (ret) - dev_warn(dev, "failed to set rate (%u): %d\n", - freq * 1024, ret); + dev_warn(dev, "failed to set rate (%llu): %d\n", clk_rate, ret); clk_prepare_enable(micfil->mclk); return ret; |