Hi Bard
Actually I have plan to post semi-multi CPU DAI support as part of ASoC cleanup. The reason why "semi-multi" is that I can't test all features. It cares Multi-CPU as much as possible.
Thus, your and my patches are 100% conflict :) But, it is OK for me. I'm happy to adjust to yours.
Some comment from me
From: Shreyas NC shreyas.nc@intel.com
ASoC core supports multiple codec DAIs but supports only a CPU DAI. To support multiple cpu DAIs, add cpu_dai and num_cpu_dai in snd_soc_dai_link and snd_soc_pcm_runtime structures similar to support for codec_dai. This is intended as a preparatory patch to eventually support the unification of the Codec and CPU DAI.
Inline with multiple codec DAI approach, add support to allocate, init, bind and probe multiple cpu_dai on init if driver specifies that. Also add support to loop over multiple cpu_dai during suspend and resume.
This is intended as a preparatory patch to eventually unify the CPU and Codec DAI into DAI components.
Signed-off-by: Shreyas NC shreyas.nc@intel.com Signed-off-by: Bard Liao yung-chuan.liao@linux.intel.com
(snip)
@@ -1149,6 +1154,9 @@ struct snd_soc_pcm_runtime { struct snd_soc_dai **codec_dais; unsigned int num_codecs;
- struct snd_soc_dai **cpu_dais;
- unsigned int num_cpu_dai;
Codec is using "num_codecs"; So, I think "num_cpus" is better for CPU.
@@ -1020,14 +1036,6 @@ static int soc_dai_link_sanity_check(struct snd_soc_card *card, return -EPROBE_DEFER; }
- /* FIXME */
- if (link->num_cpus > 1) {
dev_err(card->dev,
"ASoC: multi cpu is not yet supported %s\n",
link->name);
return -EINVAL;
- }
- /*
- CPU device may be specified by either name or OF node, but
- can be left unspecified, and will be matched based on DAI
I think you want to sanity check for each CPU DAI by using for_each_rtd_cpu_dai() here, not only removing FIXME ?
In my quick check, I think your patch-set doesn't care these functions ? # Mine version is also doesn't care. Thus it indicates warning message there. # Because I'm not sure how to handle these...
- soc_init_pcm_runtime() - snd_dmaengine_pcm_prepare_slave_config() - dmaengine_pcm_set_runtime_hwparams() - dmaengine_pcm_compat_request_channel() - dpcm_state_read_file() - dpcm_path_get() - dpcm_runtime_merge_chan() - soc_new_pcm() - soc_dpcm_fe_runtime_update()
For soc_new_pcm(), I think you need to care playback/capture flag for Multi-CPU/Codec.
For soc_dpcm_fe_runtime_update(), you need to care about Multi-CPU. But, it doesn't care Multi-Codec, either...
I attached mine version.
Thank you for your help !! Best regards --- Kuninori Morimoto