On Tue, Jun 19, 2012 at 1:12 PM, zhangfei gao zhangfei.gao@gmail.com wrote:
Hi, Mark
Excuse me, I am confused about snd_soc_suspend.
When realizing cpu_dai->driver->suspend, we found snd_soc_suspend is not called. In fact, even soc_probe is not called since no soc-audio device.
We manually alloc soc-audio deivce before in platfrom.c. dev = platform_device_alloc("soc-audio", -1); platform_set_drvdata(device, &snd_soc_card); platform_device_add(dev);
By the way, If move back to the old method, suspend works normal. snd_soc_suspend -> cpu_dai->driver->suspend are called.
However, kernel prints [ 1.212731] soc-audio soc-audio: ASoC machine brownstone should use snd_soc_register_card()
Which one is right direction?
When running, system recommend using snd_soc_register_card instead. After doing such modification, the audio could work. But strangely snd_soc_suspend is not called, as well as soc-probe. So cpu_dai->driver->suspend will no be called accordingly.
If manually add "soc-audio" in arch/, the soc-probe can be called. But snd_soc_suspend still fail to be called.
Could you give me some suggestion?
Thanks a lot.