Hi Pierre-Louis, again
> dpcm_xxx is used to declare that the DAI/dailink is possible to use
> playback/capture. For example dpcm_playback means the DAI / dailink
> should playback-able, if not it is error.
>
> xxx_only is used to limit the playback/capture.
> For example the DAI / dailink can use both playback and capture,
> but want to use playback only for some reasons, we can use playback_only.
My pervious patch-set was "try to merge dpcm_xxx and xxx_only flag",
but next patch will be "expand assertion flag to all connection".
This "assertion flag" was originaly dpcm_xxx.
In next patch-set, it will assume for example current "dpcm_playback"
as "playback_assertion". It can be used not only for DPCM, but
all connection, but is not mandatory option.
Its pseudo code is like below, but what do you think ?
soc_get_playback_capture(...)
{
...
/*
* get HW / DAI availability
*/
for_each_rtd_ch_maps(...) {
...
has_playback = xxx;
has_capture = xxx;
}
/*
* "xxx_assersion" was "dpcm_xxx" before, but expand to
* all connection. It is not mandatory option.
* It will be error if dai_link has xxx_assersion flag,
* but DAI was not valid
*/
if (dai_link->playback_assertion && !has_playback) {
dev_err(rtd->dev, ...);
return -EINVAL;
}
if (dai_link->capture_assertion && !has_capture) {
dev_err(rtd->dev, ...);
return -EINVAL;
}
/*
* xxx_only flag limits availability. It will indicate warning
* if DAI was not valid.
*/
if (dai_link->playback_only) {
if (!has_capture)
dev_warn(rtd->dev, ...);
has_capture = 0;
}
if (dai_link->capture_only) {
if (!has_playback)
dev_warn(rtd->dev, ...);
has_playback = 0;
}
/*
* No Playback, No Capture is error
*/
if (!has_playback && !has_capture) {
dev_err(rtd->dev, ...);
return -EINVAL;
}
...
}
Thank you for your help !!
Best regards
---
Renesas Electronics
Ph.D. Kuninori Morimoto
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]