On Mon, Oct 16, 2023 at 12:46:29AM +0000, Kuninori Morimoto wrote:
Hi Conor
Some of this explanation needs to go into the binding - someone reading the binding should really be able to figure out what numbers to put in there without looking at the code.
Absolutely :)
Indeed :) will do in v4
ch-maps = <0 0 1> means, cpu0 <-> codec0 cpu1 <-> codec0 cpu2 <-> codec1
What happens when you want to convey that codec0 & codec1 are both connected to cpu0 & codec2 is connected to cpu1? How would that be described in a DT? Or is that not something anyone would even want to do?
In such case, ch-maps is from codec. it will be like below. It is judged by number of cpu vs codec. [PATCH 3/4] has both case sample.
cpu >= codec : CPU base cpu < codec : Codec base
ch-maps = <0 0 1> codec0 <-> cpu0 codec1 <-> cpu0 codec2 <-> cpu1
That seems like a very unintuitive interface. If there were 32 CPUs and 30 codecs, then it'd be very inconvenient for a human reader to grok the configuration. CPUs were to be disabled in the DT, could the meaning of the property invert?
I am not really the best when it comes to audio (or media) bindings, but I am wondering if a phandle based approach would be better, where the codecs have phandles for their associated CPUs. Maybe Mark, Rob etc could comment if doing that sort of thing is not feasible.
Cheers, Conor.