(X) part is for DPCM, and it checks playback/capture availability if dai_link has dpcm_playback/capture flag (a)(b). This availability check should be available not only for DPCM, but for all connections. But it is not mandatory option. Let's name it as assertion.
I don't follow the 'not mandatory option'. Why not make these 'assertions' mandatory? What happens in case the the option is not present?
The big reason why "assertion flag" is not mandatory is that non-DPCM doesn't have such flag before. I can't add such flags to all of non-DPCM, because I don't know which direction (playback/capture) is available on each DAIs.
Your explanation seems to contradict the sentence above "This availability check should be available not only for DPCM, but for all connections."
Can we actually do this 'availability check' for non-DPCM connections.
In case of having assertion flag, non specific side will be disabled.
Not following the wording, multiple negatives and not clear on what 'side' refers to (direction or DPCM/non-DPCM).
How about this ?
If either playback or capture assertion flag was presented, not presented direction will be disabled by ASoC even if it was available.
Did you mean
" The playback (resp. capture) direction will be disabled by ASoC if the playback_assertion (resp. capture) flag is false - even if this direction was available at the DAI level "
(playback_xxx, capture_xxx)
(0, 0) : Both are not must item. available direction is used as-is. But it will be error if nothing was available.
That new wording makes me even more confused. What does 'available' refer to and at which level is this?
This seems also to contradict the definitions above, "available direction is used as-is" is not aligned with "not presented direction will be disabled by ASoC even if it was available".
(1, 0) : DAI must support selected direction. (0, 1) Not selected direction will be disabled even though it was available
(1, 1) : Both must be supported.