Hi Pierre-Louis Thank you for your feedback. I could understand your comment 80%, but not yet 100% > With the older code, if the dpcm_playback was set for the dailink but > there isn't any dai connected to support playback, an error was thrown. > > With the new code, if playback_only is set but there isn't any dai > connected, there is no error thrown, is there? (snip) > Again we had a verification that if the dpcm_playback was set at the > dailink level, it was actually supported by the dais. > > We seem to have lost this verification. We only have an error when there > are no settings at all. Pseudo code of new soc_get_playback_capture() is like this soc_get_playback_capture(...) { ... ^ for_each_rtd_ch_maps(...) { | ... (A) has_playback = xxx; | has_capture = xxx; v } ^ if (dai_link->playback_only) | has_capture = 0; (B) | if (dai_link->capture_only) v has_playback = 0; ^ if (!has_playback && !has_capture) { (C) dev_err(...); v return -EINVAL; } ... } In old/new soc_get_playback_capture(), has_xxx will be set at least if one of rtd connected DAI can handle playback/capture. In new code, it will be handled at (A). And unneeded has_xxx will be removed if xxx_only was set (B) Then, if neither has_xxx was set, it will be error (C) In new code, if playback_only is set but there isn't any dai connected, there is no error thrown, is there? If playback_only was set, has_capture will be removed at (B). And if DAI was not playback-able, this means has_playback was not set at (A). In such case, (C) will indicate error. Same things happen if capture_only too. So, old functions validation still exist in my opinion, but am I misunderstanding ? One note here is that in DPCM case, old function checks CPU only, but new function checks both CPU and Codec. 2nd note is that in current version of patch-set, if dai_link doesn't have xxx_only settings (= it should have both playback/capture), but if DAI has has_playback or has_capture only, it can't detect about it. I suggested it in previous mail, and will fix in v3 > The point is that these flags are sometimes set in the machine driver, > sometimes set in the framework, and the open is which one has the priority. I couldn't understand this. I think "machine driver" = CPU/Codec driver, but what is "these flags" which is sometimes set in machine driver, and sometimes set in framework ?? dpcm_xxx ? xxx_only ?? I don't think framework set these... Or do you mean [09/16] patch (= it will set dai_link->no_pcm) ? Thank you for your help !! Best regards --- Renesas Electronics Ph.D. Kuninori Morimoto