]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ
authorShengjiu Wang <shengjiu.wang@nxp.com>
Tue, 4 Jan 2022 10:40:33 +0000 (18:40 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 6 Jan 2022 13:55:43 +0000 (13:55 +0000)
The SAI on i.MX8MQ don't support one2one ratio for mclk:bclk, so
the mclk frequency exceeds the supported range of codec for
the case that sample rate is larger than 705kHZ and format is
S32_LE. Update the supported width for such case.

Fixes: 32569b1134f1 ("ASoC: imx-card: Add imx-card machine driver")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1641292835-19085-2-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/imx-card.c

index e758c4f1b0bc7e7e9fbb04c2a058ff3a60e7659d..e0f3aa6d9501349396f2d446bf894bddac7f5584 100644 (file)
@@ -553,8 +553,23 @@ static int imx_card_parse_of(struct imx_card_data *data)
                        link_data->cpu_sysclk_id = FSL_SAI_CLK_MAST1;
 
                        /* sai may support mclk/bclk = 1 */
-                       if (of_find_property(np, "fsl,mclk-equal-bclk", NULL))
+                       if (of_find_property(np, "fsl,mclk-equal-bclk", NULL)) {
                                link_data->one2one_ratio = true;
+                       } else {
+                               int i;
+
+                               /*
+                                * i.MX8MQ don't support one2one ratio, then
+                                * with ak4497 only 16bit case is supported.
+                                */
+                               for (i = 0; i < ARRAY_SIZE(ak4497_fs_mul); i++) {
+                                       if (ak4497_fs_mul[i].rmin == 705600 &&
+                                           ak4497_fs_mul[i].rmax == 768000) {
+                                               ak4497_fs_mul[i].wmin = 32;
+                                               ak4497_fs_mul[i].wmax = 32;
+                                       }
+                               }
+                       }
                }
 
                link->cpus->of_node = args.np;