More Generic Audio Graph Sound Card idea

Mark Brown broonie at kernel.org
Thu Oct 15 16:32:54 CEST 2020


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 at 0 { fe_ep: endpoint { remote-endpoint = <&codec1_ep>; }; };
> 			             port at 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 at 0 {
> 			/* Front-End is pcm0_ep, Back-End is dummy */
> 			dsp_fe0: port at 0 { dsp_fe0_ep: endpoint { remote-endpoint = <&pcm0_ep>; }; };
> 			         port at 1 { };
> 		};

I'm not clear why we need to represent the dummy port here?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20201015/061236da/attachment.sig>


More information about the Alsa-devel mailing list