ASoC: audio-graph-card2: add DPCM support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 12 Oct 2021 04:55:12 +0000 (13:55 +0900)
committerMark Brown <broonie@kernel.org>
Fri, 15 Oct 2021 15:10:40 +0000 (16:10 +0100)
commitf03beb55a831bc7575b3c8882bf8fa6c81198eca
tree5d091622700efce49fd9e16c7d06191adf52dc78
parentc8c74939f791ccbbfff988aec5f929374dbef2a6
ASoC: audio-graph-card2: add DPCM support

This patch adds DPCM support to audio-graph-card2.
It uses "dpcm" node (= D), needs to have routing (= A),
need to indicate both FE/BE at links (= B, C).
dpcm ports@0 is for FE (= B), port@1 is for BE (= C).
remote-endpoint can use both Single/Multi connection.

DSP
  ************
PCM0 <--> * fe0  be0 * <--> DAI0: Codec Headset
PCM1 <--> * fe1  be1 * <--> DAI1: Codec Speakers
PCM2 <--> * fe2  be2 * <--> DAI2: MODEM
PCM3 <--> * fe3  be3 * <--> DAI3: BT
  *  be4 * <--> DAI4: DMIC
  *  be5 * <--> DAI5: FM
  ************

sound {
compatible = "audio-graph-card2";

// indicate routing
(A) routing = "xxx Playback", "xxx Playback",
  "xxx Playback", "xxx Playback",
  "xxx Playback", "xxx Playback";

// indicate all Front-End, Back-End in DPCM case
(B) links = <&fe0, &fe1, ...
(C)  &be0, &be1, ...

(D) dpcm {
// Front-End
ports@0 {
(B) fe0: port@0 { fe0_ep: endpoint { remote-endpoint = <&pcm0_ep>; }; };
(B) fe1: port@1 { fe1_ep: endpoint { remote-endpoint = <&pcm1_ep>; }; };
...
};
// Back-End
ports@1 {
(C) be0: port@0 { be0_ep: endpoint { remote-endpoint = <&dai0_ep>; }; };
(C) be1: port@1 { be1_ep: endpoint { remote-endpoint = <&dai1_ep>; }; };
...
};
};
};

CPU {
ports {
bitclock-master;
frame-master;
port@0 { pcm0_ep: endpoint { remote-endpoint = <&fe0_ep>; }; };
port@1 { pcm1_ep: endpoint { remote-endpoint = <&fe1_ep>; }; };
...
};
};

Codec {
ports {
port@0 { dai0_ep: endpoint { remote-endpoint = <&be0_ep>; }; };
port@1 { dai1_ep: endpoint { remote-endpoint = <&be1_ep>; }; };
...
};
};

Link: https://lore.kernel.org/r/87k0xszlep.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87zgrelu4v.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/graph_card.h
sound/soc/generic/audio-graph-card2.c