mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
310 lines
8.1 KiB
310 lines
8.1 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
/* |
|
* audio-graph-card2-custom-sample.dtsi |
|
* |
|
* Copyright (C) 2020 Renesas Electronics Corp. |
|
* Copyright (C) 2020 Kuninori Morimoto <[email protected]> |
|
* |
|
* This sample indicates how to use audio-graph-card2 and its |
|
* custom driver. "audio-graph-card2-custom-sample" is the custome driver |
|
* which is using audio-graph-card2. |
|
* |
|
* You can easily use this sample by adding below line on your DT file, |
|
* and add new CONFIG to your .config. |
|
* |
|
* #include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi" |
|
* |
|
* CONFIG_SND_AUDIO_GRAPH_CARD2 |
|
* CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE |
|
* CONFIG_SND_TEST_COMPONENT |
|
* |
|
* |
|
* You can indicate more detail each device behavior as debug if you modify |
|
* "compatible" on each test-component. see below |
|
* |
|
* test_cpu { |
|
* - compatible = "test-cpu"; |
|
* + compatible = "test-cpu-verbose"; |
|
* ... |
|
* }; |
|
* |
|
* test_codec { |
|
* - compatible = "test-codec"; |
|
* + compatible = "test-codec-verbose"; |
|
* ... |
|
* }; |
|
* |
|
*/ |
|
/ { |
|
/* |
|
* @ : used at links |
|
* |
|
* [Normal] |
|
* cpu0 <-@-----------------> codec0 |
|
* |
|
* [Multi-CPU/Codec] |
|
* +-+ +-+ |
|
* cpu1 <--| |<-@--------->| |-> codec1 |
|
* cpu2 <--| | | |-> codec2 |
|
* +-+ +-+ |
|
* |
|
* [DPCM] |
|
* FE BE |
|
* **** |
|
* cpu3 <-@--* *--@-> codec3 |
|
* cpu4 <-@--* * |
|
* **** |
|
* |
|
* [DPCM-Multi] |
|
* |
|
* --NOTE-- |
|
* Multi-FE is not supported by ASoC. |
|
* |
|
* FE BE |
|
* **** +-+ |
|
* cpu5 <-@--* *--@-> | | -> codec4 |
|
* cpu6 <-@--* * | | -> codec5 |
|
* **** +-+ |
|
* |
|
* [Codec2Codec] |
|
* +-@-> codec6 |
|
* | |
|
* +---> codec7 |
|
* |
|
* [Codec2Codec-Multi] |
|
* |
|
* --NOTE-- |
|
* Multi connect N:M is not supported by ASoC. |
|
* |
|
* +-+ |
|
* +-@->| |-> codec8 |
|
* | | |-> codec9 |
|
* | +-+ |
|
* | +-+ |
|
* +--->| |-> codec10 |
|
* | |-> codec11 |
|
* +-+ |
|
*/ |
|
audio-graph-card2-custom-sample { |
|
/* |
|
* You can use audio-graph-card2 directly by using |
|
* |
|
* compatible = "audio-graph-card2"; |
|
*/ |
|
compatible = "audio-graph-card2-custom-sample"; |
|
|
|
/* for [DPCM] */ |
|
/* BE FE */ |
|
routing = "TC DAI3 Playback", "DAI3 Playback", |
|
"TC DAI3 Playback", "DAI4 Playback", |
|
"DAI3 Capture", "TC DAI3 Capture", |
|
"DAI4 Capture", "TC DAI3 Capture", |
|
/* for [DPCM-Multi] */ |
|
/* BE FE */ |
|
"TC DAI4 Playback", "DAI5 Playback", |
|
"TC DAI5 Playback", "DAI5 Playback", |
|
"TC DAI4 Playback", "DAI6 Playback", |
|
"TC DAI5 Playback", "DAI6 Playback", |
|
"DAI5 Capture", "TC DAI4 Capture", |
|
"DAI5 Capture", "TC DAI5 Capture", |
|
"DAI6 Capture", "TC DAI4 Capture", |
|
"DAI6 Capture", "TC DAI5 Capture", |
|
/* for [Codec2Codec] */ |
|
"TC OUT", "TC DAI7 Playback", |
|
"TC DAI6 Capture", "TC IN", |
|
/* for [Codec2Codec-Multi] */ |
|
"TC OUT", "TC DAI10 Playback", |
|
"TC DAI8 Capture", "TC IN", |
|
"TC OUT", "TC DAI11 Playback", |
|
"TC DAI9 Capture", "TC IN"; |
|
|
|
links = < |
|
/* |
|
* [Normal]: cpu side only |
|
* cpu0/codec0 |
|
*/ |
|
&cpu0 |
|
|
|
/* |
|
* [Multi-CPU/Codec]: cpu side only |
|
* cpu1/cpu2/codec1/codec2 |
|
*/ |
|
&mcpu0 |
|
|
|
/* |
|
* [DPCM]: both FE / BE |
|
* cpu3/cpu4/codec3 |
|
*/ |
|
&fe00 &fe01 &be0 |
|
|
|
/* |
|
* [DPCM-Multi]: both FE / BE |
|
* cpu5/cpu6/codec4/codec5 |
|
*/ |
|
&fe10 &fe11 &be1 |
|
|
|
/* |
|
* [Codec2Codec]: cpu side only |
|
* codec6/codec7 |
|
*/ |
|
&c2c |
|
|
|
/* |
|
* [Codec2Codec-Multi]: cpu side only |
|
* codec8/codec9/codec10/codec11 |
|
*/ |
|
&c2c_m |
|
>; |
|
|
|
multi { |
|
ports@0 { |
|
/* [Multi-CPU] */ |
|
mcpu0: port@0 { mcpu0_ep: endpoint { remote-endpoint = <&mcodec0_ep>; }; }; |
|
port@1 { mcpu1_ep: endpoint { remote-endpoint = <&cpu1_ep>; }; }; |
|
port@2 { mcpu2_ep: endpoint { remote-endpoint = <&cpu2_ep>; }; }; |
|
}; |
|
|
|
/* [Multi-Codec] */ |
|
ports@1 { |
|
port@0 { mcodec0_ep: endpoint { remote-endpoint = <&mcpu0_ep>; }; }; |
|
port@1 { mcodec1_ep: endpoint { remote-endpoint = <&codec1_ep>; }; }; |
|
port@2 { mcodec2_ep: endpoint { remote-endpoint = <&codec2_ep>; }; }; |
|
}; |
|
|
|
/* [DPCM-Multi]::BE */ |
|
ports@2 { |
|
port@0 { mbe_ep: endpoint { remote-endpoint = <&be10_ep>; }; }; |
|
port@1 { mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; }; |
|
port@2 { mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; }; }; |
|
}; |
|
|
|
/* [Codec2Codec-Multi]::CPU */ |
|
ports@3 { |
|
port@0 { mc2c0_ep: endpoint { remote-endpoint = <&c2cmf_ep>; }; }; |
|
port@1 { mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; }; }; |
|
port@2 { mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; }; }; |
|
}; |
|
|
|
/* [Codec2Codec-Multi]::Codec */ |
|
ports@4 { |
|
port@0 { mc2c1_ep: endpoint { remote-endpoint = <&c2cmb_ep>; }; }; |
|
port@1 { mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; }; }; |
|
port@2 { mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; }; }; |
|
}; |
|
}; |
|
|
|
dpcm { |
|
ports@0 { |
|
/* [DPCM]::FE */ |
|
fe00: port@0 { fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; }; |
|
fe01: port@1 { fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; }; |
|
|
|
/* [DPCM-Multi]::FE */ |
|
fe10: port@2 { fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; }; |
|
fe11: port@3 { fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; }; |
|
}; |
|
|
|
ports@1 { |
|
/* [DPCM]::BE */ |
|
be0: port@0 { be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; }; |
|
|
|
/* [DPCM-Multi]::BE */ |
|
be1: port@1 { be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; }; |
|
}; |
|
}; |
|
|
|
codec2codec { |
|
/* [Codec2Codec] */ |
|
ports@0 { |
|
/* use default settings */ |
|
c2c: port@0 { c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; }; |
|
port@1 { c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; }; |
|
}; |
|
|
|
/* [Codec2Codec-Multi] */ |
|
ports@1 { |
|
/* use original settings */ |
|
rate = <48000>; |
|
c2c_m: port@0 { c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; }; |
|
port@1 { c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; }; |
|
}; |
|
}; |
|
}; |
|
|
|
test_cpu { |
|
/* |
|
* update compatible to indicate more detail behaviour |
|
* if you want. see test-compatible for more detail. |
|
* |
|
* ex) |
|
* - compatible = "test-cpu"; |
|
* + compatible = "test-cpu-verbose"; |
|
*/ |
|
compatible = "test-cpu"; |
|
ports { |
|
bitclock-master; |
|
frame-master; |
|
/* [Normal] */ |
|
cpu0: port@0 { cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; }; |
|
|
|
/* [Multi-CPU] */ |
|
port@1 { cpu1_ep: endpoint { remote-endpoint = <&mcpu1_ep>; }; }; |
|
port@2 { cpu2_ep: endpoint { remote-endpoint = <&mcpu2_ep>; }; }; |
|
|
|
/* [DPCM]::FE */ |
|
port@3 { cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; }; |
|
port@4 { cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; }; |
|
|
|
/* [DPCM-Multi]::FE */ |
|
port@5 { cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; }; |
|
port@6 { cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; }; |
|
}; |
|
}; |
|
|
|
test_codec { |
|
/* |
|
* update compatible to indicate more detail behaviour |
|
* if you want. see test-compatible for more detail. |
|
* |
|
* ex) |
|
* - compatible = "test-codec"; |
|
* + compatible = "test-codec-verbose"; |
|
*/ |
|
compatible = "test-codec"; |
|
ports { |
|
/* |
|
* prefix can be added to *component*, |
|
* see audio-graph-card2::routing |
|
*/ |
|
prefix = "TC"; |
|
|
|
/* [Normal] */ |
|
port@0 { codec0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; }; |
|
|
|
/* [Multi-Codec] */ |
|
port@1 { codec1_ep: endpoint { remote-endpoint = <&mcodec1_ep>; }; }; |
|
port@2 { codec2_ep: endpoint { remote-endpoint = <&mcodec2_ep>; }; }; |
|
|
|
/* [DPCM]::BE */ |
|
port@3 { codec3_ep: endpoint { remote-endpoint = <&be00_ep>; }; }; |
|
|
|
/* [DPCM-Multi]::BE */ |
|
port@4 { codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; }; |
|
port@5 { codec5_ep: endpoint { remote-endpoint = <&mbe2_ep>; }; }; |
|
|
|
/* [Codec2Codec] */ |
|
port@6 { bitclock-master; |
|
frame-master; |
|
codec6_ep: endpoint { remote-endpoint = <&c2cf_ep>; }; }; |
|
port@7 { codec7_ep: endpoint { remote-endpoint = <&c2cb_ep>; }; }; |
|
|
|
/* [Codec2Codec-Multi] */ |
|
port@8 { bitclock-master; |
|
frame-master; |
|
codec8_ep: endpoint { remote-endpoint = <&mc2c00_ep>; }; }; |
|
port@9 { codec9_ep: endpoint { remote-endpoint = <&mc2c01_ep>; }; }; |
|
port@10 { codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; }; |
|
port@11 { codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; }; |
|
}; |
|
}; |
|
};
|
|
|