Re: [PATCH v2 00/21] ASoC: replace dpcm_playback/capture to playback/capture_only

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 6/1/23 18:45, Kuninori Morimoto wrote:
> 
> Hi Pierre-Louis
> Cc Mark
> 
> Can I ask you about your opinion ?
> 
>>> This is problematic, 1:4 connections have been handled for a very long
>>> time, this is basic TDM.
> 
> 	static int soc_get_playback_capture(...)
> 	{
> 		...
> 		if (dai_link->dynamic || dai_link->no_pcm) {
> 			...
> 		} else {
> 			...
> 			for_each_rtd_codec_dais(rtd, i, codec_dai) {
> 				if (dai_link->num_cpus == 1) {
> 					cpu_dai = asoc_rtd_to_cpu(rtd, 0);
> 				} else if (dai_link->num_cpus == dai_link->num_codecs) {
> 					cpu_dai = asoc_rtd_to_cpu(rtd, i);
> 				} else {
> 					dev_err(rtd->card->dev,
> 						"N cpus to M codecs link is not supported yet\n");
> 					return -EINVAL;
> 				}
> 
> 				if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) &&
> 				    snd_soc_dai_stream_valid(cpu_dai,   cpu_playback))
> =>					has_playback = 1;
> 				if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) &&
> 				    snd_soc_dai_stream_valid(cpu_dai,   cpu_capture))
> =>					has_capture = 1;
> 			}
> 		...
> 	}
> 
> In case of CPU:Codec = 1:N, and if its validation were
> 
> 	CPU   : OK
> 
> 	Codec : OK
> 	Codec : NG
> 	...
> 
> Current soc_get_playback_capture() will have has_playback/capture = 1
> evan though one of Codec was NG.
> I think it should be error, but am I right ?

Indeed, we should only enable playback (resp. capture) when all codec
dais have the same settings. We should revert the logic here IMHO to go
from 'at least one' to 'all'.




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux