Message ID | 1641292835-19085-2-git-send-email-shengjiu.wang@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 3349b3d0c63b8b6fcca58156d72407f0b2e101ac |
Headers | show |
Series | ASoC: imx-card: several improvement and fixes | expand |
On Tue, Jan 04, 2022 at 06:40:33PM +0800, Shengjiu Wang wrote: > /* 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++) { Shouldn't this be keyed off checking that we are actually running with an ak4497?
diff --git a/sound/soc/fsl/imx-card.c b/sound/soc/fsl/imx-card.c index e758c4f1b0bc..e0f3aa6d9501 100644 --- a/sound/soc/fsl/imx-card.c +++ b/sound/soc/fsl/imx-card.c @@ -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;
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: aa736700f42f ("ASoC: imx-card: Add imx-card machine driver") Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> --- sound/soc/fsl/imx-card.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)