| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * audio-graph-card2-custom-sample.dtsi |
| * |
| * Copyright (C) 2020 Renesas Electronics Corp. |
| * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| * |
| * 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"; |
| * ... |
| * }; |
| * |
| * |
| * Below sample doesn't use "format" property, |
| * because test-component driver (test-cpu/test-codec) is supporting |
| * snd_soc_dai_ops :: .auto_selectable_formats. |
| * see |
| * snd_soc_runtime_get_dai_fmt() |
| * linux/sound/soc/generic/test-component.c :: test_dai_formats |
| */ |
| / { |
| /* |
| * @ : used at links |
| * |
| * [Normal] |
| * cpu0 <-@-----------------> codec0 |
| * |
| * [Semi-Multi] |
| * |
| * CPU:Codec = 1:N |
| * |
| * +-+ |
| * cpu7 <-@------->| |-> codec12 |
| * | |-> codec13 |
| * +-+ |
| * |
| * [Multi-CPU/Codec-0] |
| * +-+ +-+ |
| * cpu1 <--| |<-@--------->| |-> codec1 |
| * cpu2 <--| | | |-> codec2 |
| * +-+ +-+ |
| * |
| * [Multi-CPU/Codec-1] |
| * |
| * +-+ +-+ |
| * | |<-@--------->| | |
| * | | | | |
| * cpu8 <--| |<----------->| |-> codec14 |
| * cpu9 <--| |<---+------->| |-> codec15 |
| * +-+ \------>| |-> codec16 |
| * +-+ |
| * |
| * [Multi-CPU/Codec-2] |
| * |
| * +-+ +-+ |
| * | |<-@--------->| | |
| * | | | | |
| * cpu10 <-| |<----------->| |-> codec17 |
| * cpu11 <-| |<-----+----->| |-> codec18 |
| * cpu12 <-| |<----/ +-+ |
| * +-+ |
| * |
| * [DPCM] |
| * |
| * CPU3/CPU4 are converting rate to 44100 |
| * |
| * FE BE |
| * **** |
| * cpu3 <-@--* *--@-> codec3 |
| * cpu4 <-@--* * (44.1kHz) |
| * **** |
| * |
| * [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 |
| |
| /* |
| * [Semi-Multi] |
| * cpu7/codec12/codec13 |
| */ |
| &sm0 |
| |
| /* |
| * [Multi-CPU/Codec-0]: cpu side only |
| * cpu1/cpu2/codec1/codec2 |
| */ |
| &mcpu0 |
| |
| /* |
| * [Multi-CPU/Codec-1]: cpu side only |
| * cpu8/cpu9/codec14/codec15/codec16 |
| * |
| * Because it will reach to the maximum of sound minor number, |
| * disable it so far. |
| * If you want to try it, please disable some other one instead. |
| */ |
| //&mcpu1 |
| |
| /* |
| * [Multi-CPU/Codec-2]: cpu side only |
| * cpu10/cpu11/cpu12/codec17/codec18 |
| * |
| * Because it will reach to the maximum of sound minor number, |
| * disable it so far. |
| * If you want to try it, please disable some other one instead. |
| */ |
| //&mcpu2 |
| |
| /* |
| * [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 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* |
| * [Multi-CPU-0] |
| * |
| * +---+ +---+ |
| * cpu1 <--|A X|<-@------->|x a|-> codec1 |
| * cpu2 <--|B | | b|-> codec2 |
| * +---+ +---+ |
| */ |
| ports@0 { |
| reg = <0>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| mcpu0: port@0 { reg = <0>; mcpu00_ep: endpoint { remote-endpoint = <&mcodec00_ep>; };};/* (X) to pair */ |
| port@1 { reg = <1>; mcpu01_ep: endpoint { remote-endpoint = <&cpu1_ep>; };};/* (A) Multi Element */ |
| port@2 { reg = <2>; mcpu02_ep: endpoint { remote-endpoint = <&cpu2_ep>; };};/* (B) Multi Element */ |
| }; |
| |
| /* |
| * [Multi-Codec-0] |
| * |
| * +---+ +---+ |
| * cpu1 <--|A X|<-@------->|x a|-> codec1 |
| * cpu2 <--|B | | b|-> codec2 |
| * +---+ +---+ |
| */ |
| ports@1 { |
| reg = <1>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mcodec00_ep: endpoint { remote-endpoint = <&mcpu00_ep>; };};/* (x) to pair */ |
| port@1 { reg = <1>; mcodec01_ep: endpoint { remote-endpoint = <&codec1_ep>; };};/* (a) Multi Element */ |
| port@2 { reg = <2>; mcodec02_ep: endpoint { remote-endpoint = <&codec2_ep>; };};/* (b) Multi Element */ |
| }; |
| |
| /* |
| * [DPCM-Multi]::BE |
| * |
| * FE BE |
| * **** +---+ |
| * cpu5 <-@--* *-----@--->|x a|-> codec4 |
| * cpu6 <-@--* * | b|-> codec5 |
| * **** +---+ |
| */ |
| ports@2 { |
| reg = <2>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mbe_ep: endpoint { remote-endpoint = <&be10_ep>; };};/* (x) to pair */ |
| port@1 { reg = <1>; mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; };};/* (a) Multi Element */ |
| port@2 { reg = <2>; mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; };};/* (b) Multi Element */ |
| }; |
| |
| /* |
| * [Codec2Codec-Multi]::CPU |
| * |
| * +---+ |
| * +-@->|X A|-> codec8 |
| * | | B|-> codec9 |
| * | +---+ |
| * | +---+ |
| * +--->|x a|-> codec10 |
| * | b|-> codec11 |
| * +---+ |
| */ |
| ports@3 { |
| reg = <3>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mc2c0_ep: endpoint { remote-endpoint = <&c2cmf_ep>; };};/* (X) to pair */ |
| port@1 { reg = <1>; mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; };};/* (A) Multi Element */ |
| port@2 { reg = <2>; mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; };};/* (B) Multi Element */ |
| }; |
| |
| /* |
| * [Codec2Codec-Multi]::Codec |
| * |
| * +---+ |
| * +-@->|X A|-> codec8 |
| * | | B|-> codec9 |
| * | +---+ |
| * | +---+ |
| * +--->|x a|-> codec10 |
| * | b|-> codec11 |
| * +---+ |
| */ |
| ports@4 { |
| reg = <4>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mc2c1_ep: endpoint { remote-endpoint = <&c2cmb_ep>; };};/* (x) to pair */ |
| port@1 { reg = <1>; mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; };};/* (a) Multi Element */ |
| port@2 { reg = <2>; mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; };};/* (b) Multi Element */ |
| }; |
| |
| /* |
| * [Semi-Multi] |
| * |
| * +---+ |
| * cpu7 <-@------->|X A|-> codec12 |
| * | B|-> codec13 |
| * +---+ |
| */ |
| ports@5 { |
| reg = <5>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; smcodec0_ep: endpoint { remote-endpoint = <&cpu7_ep>; };};/* (X) to pair */ |
| port@1 { reg = <1>; smcodec1_ep: endpoint { remote-endpoint = <&codec12_ep>; };};/* (A) Multi Element */ |
| port@2 { reg = <2>; smcodec2_ep: endpoint { remote-endpoint = <&codec13_ep>; };};/* (B) Multi Element */ |
| }; |
| |
| /* |
| * [Multi-CPU-1] |
| * |
| * +---+ +---+ |
| * | X|<-@------->|x | |
| * | | | | |
| * cpu8 <--|A 1|<--------->|3 a|-> codec14 |
| * cpu9 <--|B 2|<---+----->|4 b|-> codec15 |
| * +---+ \---->|5 c|-> codec16 |
| * +---+ |
| */ |
| ports@6 { |
| reg = <6>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| mcpu1: port@0 { reg = <0>; mcpu10_ep: endpoint { remote-endpoint = <&mcodec10_ep>; };}; /* (X) to pair */ |
| port@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| mcpu11_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu8_ep>; }; /* (A) Multi Element */ |
| mcpu11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec11_ep_0>; }; /* (1) connected Codec */ |
| }; |
| port@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| mcpu12_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu9_ep>; }; /* (B) Multi Element */ |
| mcpu12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec12_ep_0>; }; /* (2) connected Codec */ |
| mcpu12_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcodec13_ep_0>; }; /* (2) connected Codec */ |
| }; |
| }; |
| |
| /* |
| * [Multi-Codec-1] |
| * |
| * +---+ +---+ |
| * | X|<-@------->|x | |
| * | | | | |
| * cpu8 <--|A 1|<--------->|3 a|-> codec14 |
| * cpu9 <--|B 2|<---+----->|4 b|-> codec15 |
| * +---+ \---->|5 c|-> codec16 |
| * +---+ |
| */ |
| ports@7 { |
| reg = <7>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mcodec10_ep: endpoint { remote-endpoint = <&mcpu10_ep>; };}; /* (x) to pair */ |
| port@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| mcodec11_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec14_ep>; }; /* (a) Multi Element */ |
| mcodec11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu11_ep_0>; }; /* (3) connected CPU */ |
| }; |
| port@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| mcodec12_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec15_ep>; }; /* (b) Multi Element */ |
| mcodec12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_0>; }; /* (4) connected CPU */ |
| }; |
| port@3 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <3>; |
| mcodec13_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec16_ep>; }; /* (c) Multi Element */ |
| mcodec13_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_1>; }; /* (5) connected CPU */ |
| }; |
| }; |
| |
| /* |
| * [Multi-CPU-2] |
| * |
| * +---+ +---+ |
| * | X|<-@------->|x | |
| * | | | | |
| * cpu10 <-|A 1|<--------->|4 a|-> codec17 |
| * cpu11 <-|B 2|<-----+--->|5 b|-> codec18 |
| * cpu12 <-|C 3|<----/ +---+ |
| * +---+ |
| */ |
| ports@8 { |
| reg = <8>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| mcpu2: port@0 { reg = <0>; mcpu20_ep: endpoint { remote-endpoint = <&mcodec20_ep>; };}; /* (X) to pair */ |
| port@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| mcpu21_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu10_ep>; }; /* (A) Multi Element */ |
| mcpu21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec21_ep_0>; }; /* (1) connected Codec */ |
| }; |
| port@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| mcpu22_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu11_ep>; }; /* (B) Multi Element */ |
| mcpu22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_0>; }; /* (2) connected Codec */ |
| }; |
| port@3 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <3>; |
| mcpu23_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu12_ep>; }; /* (C) Multi Element */ |
| mcpu23_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_1>; }; /* (3) connected Codec */ |
| }; |
| }; |
| |
| /* |
| * [Multi-Codec-2] |
| * |
| * +---+ +---+ |
| * | X|<-@------->|x | |
| * | | | | |
| * cpu10 <-|A 1|<--------->|4 a|-> codec17 |
| * cpu11 <-|B 2|<-----+--->|5 b|-> codec18 |
| * cpu12 <-|C 3|<----/ +---+ |
| * +---+ |
| */ |
| ports@9 { |
| reg = <9>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { reg = <0>; mcodec20_ep: endpoint { remote-endpoint = <&mcpu20_ep>; };}; /* (x) to pair */ |
| port@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| mcodec21_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec17_ep>; }; /* (a) Multi Element */ |
| mcodec21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu21_ep_0>; }; /* (4) connected CPU */ |
| }; |
| port@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| mcodec22_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec18_ep>; }; /* (b) Multi Element */ |
| mcodec22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu22_ep_0>; }; /* (5) connected CPU */ |
| mcodec22_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcpu23_ep_0>; }; /* (5) connected CPU */ |
| }; |
| }; |
| }; |
| |
| dpcm { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| ports@0 { |
| reg = <0>; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| /* |
| * [DPCM]::FE |
| * |
| * FE BE |
| * **** |
| * cpu3 <-@(fe00)--* *--(be0)@--> codec3 |
| * cpu4 <-@(fe01)--* * (44.1kHz) |
| * **** |
| */ |
| fe00: port@0 { reg = <0>; fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; }; |
| fe01: port@1 { reg = <1>; fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; }; |
| |
| /* |
| * [DPCM-Multi]::FE |
| * |
| * FE BE |
| * **** +-+ |
| * cpu5 <-@(fe10)--* *---(be1)@-->| |-> codec4 |
| * cpu6 <-@(fe11)--* * | |-> codec5 |
| * **** +-+ |
| */ |
| fe10: port@2 { reg = <2>; fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; }; |
| fe11: port@3 { reg = <3>; fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; }; |
| }; |
| |
| ports@1 { |
| reg = <1>; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| /* |
| * [DPCM]::BE |
| * |
| * FE BE |
| * **** |
| * cpu3 <-@(fe00)--* *--(be0)@--> codec3 |
| * cpu4 <-@(fe01)--* * (44.1kHz) |
| * **** |
| */ |
| be0: port@0 { reg = <0>; be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; }; |
| |
| /* |
| * [DPCM-Multi]::BE |
| * |
| * FE BE |
| * **** +-+ |
| * cpu5 <-@(fe10)--* *---(be1)@-->| |-> codec4 |
| * cpu6 <-@(fe11)--* * | |-> codec5 |
| * **** +-+ |
| */ |
| be1: port@1 { reg = <1>; be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; }; |
| }; |
| }; |
| |
| codec2codec { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| /* |
| * [Codec2Codec] |
| * |
| * +-@(c2c)-> codec6 |
| * | |
| * +--------> codec7 |
| */ |
| ports@0 { |
| reg = <0>; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* use default settings */ |
| c2c: port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; }; |
| port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; }; |
| }; |
| |
| /* |
| * [Codec2Codec-Multi] |
| * |
| * +-+ |
| * +-@(c2c_m)-->| |-> codec8 |
| * | | |-> codec9 |
| * | +-+ |
| * | +-+ |
| * +----------->| |-> codec10 |
| * | |-> codec11 |
| * +-+ |
| */ |
| ports@1 { |
| reg = <1>; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* use original settings */ |
| rate = <48000>; |
| c2c_m: port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; }; |
| port@1 { reg = <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 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| bitclock-master; |
| frame-master; |
| /* [Normal] */ |
| cpu0: port@0 { reg = <0>; cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; }; |
| |
| /* [Multi-CPU-0] */ |
| port@1 { reg = <1>; cpu1_ep: endpoint { remote-endpoint = <&mcpu01_ep>; }; }; |
| port@2 { reg = <2>; cpu2_ep: endpoint { remote-endpoint = <&mcpu02_ep>; }; }; |
| |
| /* [DPCM]::FE */ |
| port@3 { reg = <3>; cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; }; |
| port@4 { reg = <4>; cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; }; |
| |
| /* [DPCM-Multi]::FE */ |
| port@5 { reg = <5>; cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; }; |
| port@6 { reg = <6>; cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; }; |
| |
| /* [Semi-Multi] */ |
| sm0: port@7 { reg = <7>; cpu7_ep: endpoint { remote-endpoint = <&smcodec0_ep>; }; }; |
| |
| /* [Multi-CPU-1] */ |
| port@8 { reg = <8>; cpu8_ep: endpoint { remote-endpoint = <&mcpu11_ep>; }; }; |
| port@9 { reg = <9>; cpu9_ep: endpoint { remote-endpoint = <&mcpu12_ep>; }; }; |
| /* [Multi-CPU-2] */ |
| port@a { reg = <10>; cpu10_ep: endpoint { remote-endpoint = <&mcpu21_ep>; }; }; |
| port@b { reg = <11>; cpu11_ep: endpoint { remote-endpoint = <&mcpu22_ep>; }; }; |
| port@c { reg = <12>; cpu12_ep: endpoint { remote-endpoint = <&mcpu23_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 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* |
| * prefix can be added to *component*, |
| * see audio-graph-card2::routing |
| */ |
| prefix = "TC"; |
| |
| /* [Normal] */ |
| port@0 { reg = <0>; codec0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; }; |
| |
| /* [Multi-Codec-0] */ |
| port@1 { reg = <1>; codec1_ep: endpoint { remote-endpoint = <&mcodec01_ep>; }; }; |
| port@2 { reg = <2>; codec2_ep: endpoint { remote-endpoint = <&mcodec02_ep>; }; }; |
| |
| /* [DPCM]::BE */ |
| port@3 { |
| convert-rate = <44100>; |
| reg = <3>; codec3_ep: endpoint { remote-endpoint = <&be00_ep>; }; |
| }; |
| |
| /* [DPCM-Multi]::BE */ |
| port@4 { reg = <4>; codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; }; |
| port@5 { reg = <5>; codec5_ep: endpoint { remote-endpoint = <&mbe2_ep>; }; }; |
| |
| /* [Codec2Codec] */ |
| port@6 { bitclock-master; |
| frame-master; |
| reg = <6>; codec6_ep: endpoint { remote-endpoint = <&c2cf_ep>; }; }; |
| port@7 { reg = <7>; codec7_ep: endpoint { remote-endpoint = <&c2cb_ep>; }; }; |
| |
| /* [Codec2Codec-Multi] */ |
| port@8 { bitclock-master; |
| frame-master; |
| reg = <8>; codec8_ep: endpoint { remote-endpoint = <&mc2c00_ep>; }; }; |
| port@9 { reg = <9>; codec9_ep: endpoint { remote-endpoint = <&mc2c01_ep>; }; }; |
| port@a { reg = <10>; codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; }; |
| port@b { reg = <11>; codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; }; |
| |
| /* [Semi-Multi] */ |
| port@c { reg = <12>; codec12_ep: endpoint { remote-endpoint = <&smcodec1_ep>; }; }; |
| port@d { reg = <13>; codec13_ep: endpoint { remote-endpoint = <&smcodec2_ep>; }; }; |
| |
| /* [Multi-Codec-1] */ |
| port@e { reg = <14>; codec14_ep: endpoint { remote-endpoint = <&mcodec11_ep>; }; }; |
| port@f { reg = <15>; codec15_ep: endpoint { remote-endpoint = <&mcodec12_ep>; }; }; |
| port@10 { reg = <16>; codec16_ep: endpoint { remote-endpoint = <&mcodec13_ep>; }; }; |
| /* [Multi-Codec-2] */ |
| port@11 { reg = <17>; codec17_ep: endpoint { remote-endpoint = <&mcodec21_ep>; }; }; |
| port@12 { reg = <18>; codec18_ep: endpoint { remote-endpoint = <&mcodec22_ep>; }; }; |
| }; |
| }; |
| }; |