Hi Jerome
Thank you for your reply
If so, did you get below warning too ? "both playback/capture are available, but not using playback_only flag (%s)\n",
I've checked. No such trace, no.
OK, thanks
Card dpcm_playback = (0 or 1) dpcm_capture = (0 or 1) playback_only = (0 or 1) capture_only = (0 or 1) BE.CPU playback = (available, not available) capture = (available, not available) BE.Codec playback = (available, not available) capture = (available, not available) Expect playback = (available, not available) capture = (available, not available)
I'm not too sure I undestand this. I'll try to illustrate the case raising the warning as precisely as possible bellow
Thanks
Because you got was
(A) axg-sound-card sound: CPU capture is available but Codec capture is not (be.dai-link-6) Please update Codec driver
It is for BE. And validation check is for each rtd only, this means it checks BE only, relationship with other rtd is not related here.
-------- |CPU BE| This is the TDM interface. Capable of both Playback and -------- Capture. Through routing it can be connected to Playback ^ and/or Capture FE CPUs. | V ------------- |BE Codec(s)| Possibly N codecs, supporting both direction, or a ------------- Single one, or one direction each. In this particular case | it is Playback only C2C.
So, I think the warning happen here. The validation check is checking this BE only.
As I mentioned above, you use this BE through playback only FE and/or C2C, but that relationship is not related to here.
According to above explanation, this BE itself is available for both playback and capture. And you didn't get below warning, I guess this BE has both dpcm_playback/capture flag, and no xxx_only flag.
"both playback/capture are available, but not using playback_only flag (%s)\n",
Before my patch, the validation check is checks CPU-BE only, but it also checks BE-Codec after my patch, and you got the warning (A).
So, I guess your BE-Codec simply missing capture channels_min settings. Please double check it, or please tell me which codec driver this BE is using.
static struct snd_soc_dai_driver xxx_dai = { ... .playback = { ... .channels_min = x, ... }, .capture = { ... => .channels_min = x, ... }, },
But I noticed that we want to update below. I'm happy if it can solve your issue.
- if (has_playback && !has_playback_both)
- if (has_playback && !has_playback_both && !dai_link->capture_only) dev_warn(rtd->card->dev, ...)
- if (has_capture && !has_capture_both)
- if (has_capture && !has_capture_both && !dai_link->playback_only) dev_warn(rtd->card->dev, ...)
Honestly I'm a bit lost in all these flag :/
Thanks, no problem, me too :9
Unfortunately and confusingly, there are many combination exist around here. But because of your feedback, I noticed one missing pattern. Thanks
Thank you for your help !!
Best regards --- Renesas Electronics Ph.D. Kuninori Morimoto