On Thu, Nov 19, 2020 at 01:28:32PM +0800, Shengjiu Wang wrote: > On Thu, Nov 19, 2020 at 1:02 PM Nicolin Chen <nicoleotsuka@xxxxxxxxx> wrote: > > > > On Thu, Nov 19, 2020 at 10:29:16AM +0800, Shengjiu Wang wrote: > > > On VF610, mclk0 = bus_clk; > > > On i.MX6SX/6UL/6ULL/7D, mclk0 = mclk1; > > > On i.MX7ULP, mclk0 = bus_clk; > > > On i.MX8QM/8QXP, mclk0 = bus_clk; > > > On i.MX8MQ/8MN/8MM/8MP, mclk0 = bus_clk; > > > > > > So add variable mclk0_mclk1_match in fsl_sai_soc_data To > > > > Not in favor of "mclk0_mclk1_match" as it doesn't sound explicit > > to me. Instead, "mclk0_is_bus_clk" or "mclk0_is_mclk1" might be > > better. Or in case that you foresee some other implementation: > > > > enum { > > MCLK0_IS_BUS_CLK, > > MCLK0_IS_MCLK1, > > }; > > > > static const struct fsl_sai_soc_data fsl_sai_vf610_data = { > > + .mclk0_alias = MCLK0_IS_BUS_CLK, > > }; > > No problem. > > But I just find this patch doesn't consider the mqs case. > MCLK0 can't be used for mqs, it needs MCLK1, even > the MCLK0 is same as MCLK1, MCLK1 need to be > selected for mqs case. > > Is there a decent way for this case? Is there any use case that we have to use MCLK0 instead of MCLK1 on SoCs where MCLK0=MCLK1? If no, how about skip MCLK0 at all in the for-loop at fsl_sai_set_bclk? /* * There is no point in polling MCLK0 if it is identical to MCLK1. * And given that MQS use case has to use MCLK1 though two clocks * are the same, we simply skip MCLK0 and start to find from MCLK1. */ id = mclk0_is_mclk1 ? 1 : 0; for (; id < FSL_SAI_MCLK_MAX; id++) {