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@gmail.com 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++) {