On Tue, Oct 13, 2020 at 01:50:25PM +0900, Kuninori Morimoto wrote:
I'm thinking below style as new audio-graph-card2. It is not tricky, thus connection judgement for normal vs DSP is easy. Then, code can be more readable (= no guaranty :P) ?
I have proposed DPCM connection idea for audio-card2 before, and proposed Multi-CPU/Codec connection idea later. I'm not yet implemented these, but I want to merge / reuse these idea to keep simple code.
By this mail, I want to propose Codec2Codec idea. It is almost same idea with DPCM, Multi-CPU/Codec, and is last parts for missing feature.
I think this idea can be generic and easy to update in the future (if needed).
But, I want feedback, opinion. I wonder does it works for your use-case ?
-- Image ---
Codec2Codec
Codec1 <--> Codec2
-- DT Image --
+--+ => | |<--> Codec1 | |<--> Codec2 +--+
-- DT Sample --
sound { compatible = "audio-graph-card2";
dais = <&codec2codec>;
};
CODEC2CODEC { compatible = "audio-graph-card2-codec2codec";
ports { codec2codec: port@0 { fe_ep: endpoint { remote-endpoint = <&codec1_ep>; }; }; port@1 { be_ep: endpoint { remote-endpoint = <&codec2_ep>; }; }; };
};
I'm a bit confused about the use of FE and BE here since the two CODECs are peers rather than this being DPCM - I think that's just a bit cut'n'paste rather than anything else though? The other examples look sensible I think but this one feels odd.
-- Image ---
*******
PCM0 <--> * * <--> DAI0: Codec Headset PCM1 <--> * * <--> DAI1: Codec Speakers PCM2 <--> * DSP * <--> DAI2: MODEM PCM3 <--> * * <--> DAI3: BT * * <--> DAI4: DMIC * * <--> DAI5: FM *******
DSP { compatible = "audio-graph-card2-dsp";
ports@0 { /* Front-End is pcm0_ep, Back-End is dummy */ dsp_fe0: port@0 { dsp_fe0_ep: endpoint { remote-endpoint = <&pcm0_ep>; }; }; port@1 { }; };
I'm not clear why we need to represent the dummy port here?