On 04.01.2018 20:07, Nicolin Chen wrote:
On Mon, Jan 01, 2018 at 04:17:20PM +0100, Maciej S. Szmigiero wrote:
AC97 configures some registers earlier to start a communication with CODECs, so this patch moves those register settings to the dai_probe() as well, along with other register configurations.
This patch breaks AC'97 CODEC probing.
Namely, the fsl_ssi DAI probe callback is only called after the AC'97 CODEC probe callback, so when you move SSI AC'97 startup to its DAI probe callback it won't be done yet when the CODEC is probed (and this requires a working AC'97 interface to successfully complete).
Hmm...What's the dependency here? Why is it required like this?
This patch moves enabling AC'97 communication (done by fsl_ssi_setup_ac97() ) from SSI _platform device_ probe path to SSI _DAI_ probe path.
However, it turns out that a SSI _DAI_ probe happens after a AC'97 CODEC probe (that is, ac97_soc_probe() in sound/soc/codecs/ac97.c). And a AC'97 CODEC probe needs AC'97 communication to be working, since it has to detect the CODEC model, configure it, etc.
I am okay to put everything to a separate fsl_ssi_hw_init() and move it back to the platform probe() though.
This could be a solution - I assume that by "everything" in the above sentence you mean (at least) enabling the AC'97 communication at the SSI.
Maciej