Hi Morimoto-san, Mark, On 10/09/2021 04:20, Kuninori Morimoto wrote: > > Hi Mark > > We already have Audio-Graph-Card which is Of-Graph base general sound > card driver. Basically it supports basic CPU-Codec connection, and is > also supporting DPCM connection. Because it was forcibly expanded to > DPCM, DT parsing is very limited and very difficult to add new features > on it, for example Multi-CPU/Codec support, Codec2Codec support, etc. > > This patch adds more flexible new Rich-Graph-Card driver for it. > Audio-Graph-Card and Rich-Graph-Card are similar, but don't have > full compatibility. > The reason why I need Rich-Graph-Card instead of updating Audio-Graph-Card > is that it is very difficult to keep compatibility. > > Rich-Graph-Card supports Normal/DPCM/Codec2Codec Connection wich > Single/Multi DAIs. And it is possible to Customizing. > > This patch-set adds Rich-Graph-Card driver and customized driver > sample, and DT settings sample which can be used for testing. I understand is that naming is difficult, but a rich-graph-card sounds a bit awkward? Will we see a wealthy-graph-card if the rich is not resourceful enough? ;) The current generation of graph based generic audio card is audio-graph-card This is going to be an (incompatible) evolution, the Next/New Generation. Would it sound better if it is named audio-graph-card-ng / ng-audio-graph-card The 'rich' sound really out of place (if not rich then poor?). Next Generation, New Generation, Extended, etc or just drop the graph and generic-audio-card > To enable testing/debuging, this patch-set also adds Test-Component > driver. We already have Dummy Component and/or Dummy DAI on soc-utils, > but 1) we can't use it from DT, 2) it do nothing. > Added new Test-Component can be used from DT, and it can indicate called > function name. We can use it to trace callback order, understanding > ALSA SoC behavior, etc, etc... > Sample DT settings of Rich Graph Card is using Test-Component as CPU/Codec DAI. > > You can easily try to use/test it if you added below line to your DT file. > Your .config needs to have below CONFIGs to use/test it. > It will probe sample Sound Card which has Normal/DPCM/Multi/Codec2Codec > connections. > > #include "../../../../../sound/soc/generic/rich-graph-card-sample.dtsi" > > CONFIG_SND_RICH_GRAPH_CARD > CONFIG_SND_RICH_CUSTOM_CARD_SAMPLE > CONFIG_SND_TEST_COMPONENT > > Because Audio Graph Card2 is still under experimental stage, it will > indicate such warning when probing, and the DT might be updated/exchanged. > > It can use Codec2Codec, but it will start automatically when probed, > and can't stop it so far. It should be updated. > > Link: https://lore.kernel.org/r/87k0xszlep.wl-kuninori.morimoto.gx@xxxxxxxxxxx > Link: https://lore.kernel.org/r/871r8u4s6q.wl-kuninori.morimoto.gx@xxxxxxxxxxx > Link: https://lore.kernel.org/r/87a6mhwyqn.wl-kuninori.morimoto.gx@xxxxxxxxxxx > > v1 -> v2 > - don't use "port" base for_each loop > > v2 -> v3 > - Rename audio-graph-card2 to rich-graph-card > - Rename DSP to DPCM not to confuse > - Normal/DPCM/Codec2Codec can use Single/Multi DAIs. > - use dpcm/multi/codec2codec node instead of using extra compatible > - Sample DTSI patch is separated to Single/Multi. > > Kuninori Morimoto (16): > ASoC: test-component: add Test Component YAML bindings > ASoC: test-component: add Test Component for Sound debug/test > ASoC: simple-card-utils: add asoc_graph_is_ports0() > ASoC: simple-card-utils: add codec2codec support > ASoC: add Rich Graph Card driver > ASoC: rich-graph-card: add Multi CPU/Codec support > ASoC: rich-graph-card: add DPCM support > ASoC: rich-graph-card: add Codec2Codec support > ASoC: add Rich Graph Card Yaml Document > ASoC: add Rich Graph Card Custom Sample > ASoC: rich-graph-card-sample.dtsi: add Sample DT for Normal (Single) > ASoC: rich-graph-card-sample.dtsi: add Sample DT for Normal (Nulti) > ASoC: rich-graph-card-sample.dtsi: add DPCM sample (Single) > ASoC: rich-graph-card-sample.dtsi: add DPCM sample (Multi) > ASoC: rich-graph-card-sample.dtsi: add Codec2Codec sample (Single) > ASoC: rich-graph-card-sample.dtsi: add Codec2Codec sample (Multi) > > .../bindings/sound/rich-graph-card.yaml | 57 + > .../bindings/sound/test-component.yaml | 33 + > include/sound/graph_card.h | 21 + > include/sound/simple_card_utils.h | 4 + > sound/soc/generic/Kconfig | 20 + > sound/soc/generic/Makefile | 6 + > sound/soc/generic/rich-custom-card-sample.c | 174 +++ > sound/soc/generic/rich-graph-card-sample.dtsi | 225 +++ > sound/soc/generic/rich-graph-card.c | 1277 +++++++++++++++++ > sound/soc/generic/simple-card-utils.c | 46 +- > sound/soc/generic/test-component.c | 659 +++++++++ > 11 files changed, 2521 insertions(+), 1 deletion(-) > create mode 100644 Documentation/devicetree/bindings/sound/rich-graph-card.yaml > create mode 100644 Documentation/devicetree/bindings/sound/test-component.yaml > create mode 100644 sound/soc/generic/rich-custom-card-sample.c > create mode 100644 sound/soc/generic/rich-graph-card-sample.dtsi > create mode 100644 sound/soc/generic/rich-graph-card.c > create mode 100644 sound/soc/generic/test-component.c > -- Péter