On Wed, Aug 12, 2015 at 12:45:10PM +0800, Zidan Wang wrote:
/*
* for imx6ul we should set SAI2_MCLK_DIR to enable
* codec MCLK
*/
if (of_device_is_compatible(np, "fsl,imx6ul-evk-wm8960"))
regmap_update_bits(priv->gpr, 4, 1 << 20, 1 << 20);
What's this SAI2_MCLK_DIR? Can you provide the description of it?
SAI2_MCLK_DIR: SD1_CLK data direction control when sai2.MCLK is selected (ALT2) 0 SD1_CLK output driver is disabled when configured for ALT2 1 SD1_CLK output driver is enabled when configured for ALT2
We are using SAI2 now, so we should enable SAI2_MCLK_DIR. If we want to use SAI1 and SAI3, we should also enable SAI1_MCLK_DIR and SAI3_MCLK_DIR. I don't consider SAI1 and SAI3 case, should i add it like below:
Yes. Just think about a general interface/configuration that can satisfy all the MCLK cases you can imagine.
Since it's a clock dealing with SAI, I think it would be better to put the configuration inside:
494 } else if (strstr(cpu_np->name, "sai")) { 495 priv->cpu_priv.sysclk_id[1] = FSL_SAI_CLK_MAST1; 496 priv->cpu_priv.sysclk_id[0] = FSL_SAI_CLK_MAST1; 497 }
And I still don't understand the meaning of this MCLK at all. Does it indicate SAI's MCLK or an MCLK for external CODEC chips? Will it be possible that a user needs this MCLK bit to be unset?
Can you share the document to me privately so I can give you a suggestion in detail?
- priv->dai_link[0].codec_dai_name = codec_dev->name;
- if (strstr(codec_dev->name, "wm8960"))
priv->dai_link[0].codec_dai_name = "wm8960-hifi";
- else
priv->dai_link[0].codec_dai_name = codec_dev->name;
What happens to the codec_dev->name over here so that you need to specify the name?
In wm8960 codec driver, codec dai name is "wm8960-hifi". Using codec_dev->name will cauce register card failed.
When we meet a problem, the first response should be to find out the route cause instead of fixing it with a work around directly. If the codec_dev->name caused a card registration failure, you need to find out why. There must be something wrong with its codec driver or this sound card driver.
Nicolin