Uff, that is a lot of background knowledge. Would it be possible to put this explanation into ice1724.c code? It would definitely help newcomers. Thanks a lot.
A patch is welcome ;)
Sure, I will make one.
Then the problem is that it passed the playback substream to snd_ak4114_build(). I guess passing NULL there instead should work.
Sounds like a perfectly simple solution. I am just wondering if the following code in ak4114.c is correct:
if (!strstr(kctl->id.name, "Playback")) { if (ply_substream == NULL) { snd_ctl_free_one(kctl); ak4114->kctls[idx] = NULL; continue; } kctl->id.device = ply_substream->pcm->device; kctl->id.subdevice = ply_substream->number; } else { kctl->id.device = cap_substream->pcm->device; kctl->id.subdevice = cap_substream->number; }
If control name does NOT contain "Playback", playback stream is used. Should not be the check reversed? You are right, that code can handle the solution you propose.
Pavel.