cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

audio-graph-card2-custom-sample.dtsi (7174B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * audio-graph-card2-custom-sample.dtsi
      4 *
      5 * Copyright (C) 2020 Renesas Electronics Corp.
      6 * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      7 *
      8 * This sample indicates how to use audio-graph-card2 and its
      9 * custom driver. "audio-graph-card2-custom-sample" is the custome driver
     10 * which is using audio-graph-card2.
     11 *
     12 * You can easily use this sample by adding below line on your DT file,
     13 * and add new CONFIG to your .config.
     14 *
     15 *	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi"
     16 *
     17 *	CONFIG_SND_AUDIO_GRAPH_CARD2
     18 *	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
     19 *	CONFIG_SND_TEST_COMPONENT
     20 */
     21/ {
     22	/*
     23	 * @ : used at links
     24	 *
     25	 * [Normal]
     26	 *	cpu0 <-@-----------------> codec0
     27	 *
     28	 * [Multi-CPU/Codec]
     29	 *		+-+		+-+
     30	 *	cpu1 <--| |<-@--------->| |-> codec1
     31	 *	cpu2 <--| |		| |-> codec2
     32	 *		+-+		+-+
     33	 *
     34	 * [DPCM]
     35	 *	FE		BE
     36	 *		  ****
     37	 *	cpu3 <-@--*  *--@-> codec3
     38	 *	cpu4 <-@--*  *
     39	 *		  ****
     40	 *
     41	 * [DPCM-Multi]
     42	 *
     43	 * --NOTE--
     44	 * Multi-FE is not supported by ASoC.
     45	 *
     46	 *	FE		BE
     47	 *		  ****	    +-+
     48	 *	cpu5 <-@--*  *--@-> | | -> codec4
     49	 *	cpu6 <-@--*  *	    | | -> codec5
     50	 *		  ****	    +-+
     51	 *
     52	 * [Codec2Codec]
     53	 *			   +-@-> codec6
     54	 *			   |
     55	 *			   +---> codec7
     56	 *
     57	 * [Codec2Codec-Multi]
     58	 *
     59	 * --NOTE--
     60	 * Multi connect N:M is not supported by ASoC.
     61	 *
     62	 *				+-+
     63	 *			   +-@->| |-> codec8
     64	 *			   |	| |-> codec9
     65	 *			   |	+-+
     66	 *			   |	+-+
     67	 *			   +--->| |-> codec10
     68	 *				| |-> codec11
     69	 *				+-+
     70	 */
     71	audio-graph-card2-custom-sample {
     72		/*
     73		 * You can use audio-graph-card2 directly by using
     74		 *
     75		 * compatible = "audio-graph-card2";
     76		 */
     77		compatible = "audio-graph-card2-custom-sample";
     78
     79			/* for [DPCM]		   */
     80			/* BE			FE */
     81		routing = "TC DAI3 Playback",	"DAI3 Playback",
     82			  "TC DAI3 Playback",	"DAI4 Playback",
     83			  "DAI3 Capture",	"TC DAI3 Capture",
     84			  "DAI4 Capture",	"TC DAI3 Capture",
     85			/* for [DPCM-Multi]	   */
     86			/* BE			FE */
     87			  "TC DAI4 Playback",	"DAI5 Playback",
     88			  "TC DAI5 Playback",	"DAI5 Playback",
     89			  "TC DAI4 Playback",	"DAI6 Playback",
     90			  "TC DAI5 Playback",	"DAI6 Playback",
     91			  "DAI5 Capture",	"TC DAI4 Capture",
     92			  "DAI5 Capture",	"TC DAI5 Capture",
     93			  "DAI6 Capture",	"TC DAI4 Capture",
     94			  "DAI6 Capture",	"TC DAI5 Capture",
     95			/* for [Codec2Codec] */
     96			  "TC OUT",		"TC DAI7 Playback",
     97			  "TC DAI6 Capture",	"TC IN",
     98			/* for [Codec2Codec-Multi] */
     99			  "TC OUT",		"TC DAI10 Playback",
    100			  "TC DAI8 Capture",	"TC IN",
    101			  "TC OUT",		"TC DAI11 Playback",
    102			  "TC DAI9 Capture",	"TC IN";
    103
    104		links = <&cpu0			/* normal: cpu side only */
    105			 &mcpu0			/* multi:  cpu side only */
    106			 &fe00 &fe01 &be0	/* dpcm:   both FE / BE  */
    107			 &fe10 &fe11 &be1	/* dpcm-m: both FE / BE  */
    108			 &c2c			/* c2c:    cpu side only */
    109			 &c2c_m			/* c2c:    cpu side only */
    110		>;
    111
    112		multi {
    113			ports@0 {
    114			mcpu0:	port@0 { mcpu0_ep: endpoint { remote-endpoint = <&mcodec0_ep>; }; };
    115				port@1 { mcpu1_ep: endpoint { remote-endpoint = <&cpu1_ep>;    }; };
    116				port@2 { mcpu2_ep: endpoint { remote-endpoint = <&cpu2_ep>;    }; };
    117			};
    118			ports@1 {
    119				port@0 { mcodec0_ep: endpoint { remote-endpoint = <&mcpu0_ep>;  }; };
    120				port@1 { mcodec1_ep: endpoint { remote-endpoint = <&codec1_ep>; }; };
    121				port@2 { mcodec2_ep: endpoint { remote-endpoint = <&codec2_ep>; }; };
    122			};
    123			ports@2 {
    124				port@0 { mbe_ep:  endpoint { remote-endpoint = <&be10_ep>;  }; };
    125				port@1 { mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; };
    126				port@2 { mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; }; };
    127			};
    128			ports@3 {
    129				port@0 { mc2c0_ep:  endpoint { remote-endpoint = <&c2cmf_ep>;  }; };
    130				port@1 { mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; }; };
    131				port@2 { mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; }; };
    132			};
    133			ports@4 {
    134				port@0 { mc2c1_ep:  endpoint { remote-endpoint = <&c2cmb_ep>;  }; };
    135				port@1 { mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; }; };
    136				port@2 { mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; }; };
    137			};
    138		};
    139
    140		dpcm {
    141			/* FE */
    142			ports@0 {
    143			fe00:	port@0 { fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; };
    144			fe01:	port@1 { fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; };
    145			fe10:	port@2 { fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; };
    146			fe11:	port@3 { fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; };
    147			};
    148			/* BE */
    149			ports@1 {
    150			be0:	port@0 { be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; };
    151			be1:	port@1 { be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; };
    152			};
    153		};
    154
    155		codec2codec {
    156			ports@0 {
    157				rate = <48000>;
    158			c2c:	port@0 { c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; };
    159				port@1 { c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; };
    160			};
    161			ports@1 {
    162				rate = <48000>;
    163			c2c_m:	port@0 { c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; };
    164				port@1 { c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; };
    165			};
    166		};
    167	};
    168
    169	test_cpu {
    170		/*
    171		 * update compatible to indicate more detail behaviour
    172		 * if you want. see test-compatible for more detail.
    173		 *
    174		 * ex)
    175		 *	- compatible = "test-cpu";
    176		 *	+ compatible = "test-cpu-verbose";
    177		 */
    178		compatible = "test-cpu";
    179		ports {
    180			bitclock-master;
    181			frame-master;
    182			cpu0: port@0 { cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; };
    183			      port@1 { cpu1_ep: endpoint { remote-endpoint = <&mcpu1_ep>; }; };
    184			      port@2 { cpu2_ep: endpoint { remote-endpoint = <&mcpu2_ep>; }; };
    185			      port@3 { cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; };
    186			      port@4 { cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; };
    187			      port@5 { cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; };
    188			      port@6 { cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; };
    189		};
    190	};
    191
    192	test_codec {
    193		/*
    194		 * update compatible to indicate more detail behaviour
    195		 * if you want. see test-compatible for more detail.
    196		 *
    197		 * ex)
    198		 *	- compatible = "test-codec";
    199		 *	+ compatible = "test-codec-verbose";
    200		 */
    201		compatible = "test-codec";
    202		ports {
    203			/*
    204			 * prefix can be added to *component*,
    205			 * see audio-graph-card2::routing
    206			 */
    207			prefix = "TC";
    208
    209			port@0  { codec0_ep:  endpoint { remote-endpoint = <&cpu0_ep>; }; };
    210			port@1  { codec1_ep:  endpoint { remote-endpoint = <&mcodec1_ep>; }; };
    211			port@2  { codec2_ep:  endpoint { remote-endpoint = <&mcodec2_ep>; }; };
    212			port@3  { codec3_ep:  endpoint { remote-endpoint = <&be00_ep>; }; };
    213			port@4  { codec4_ep:  endpoint { remote-endpoint = <&mbe1_ep>; }; };
    214			port@5  { codec5_ep:  endpoint { remote-endpoint = <&mbe2_ep>; }; };
    215			port@6  { bitclock-master;
    216				  frame-master;
    217				  codec6_ep:  endpoint { remote-endpoint = <&c2cf_ep>; }; };
    218			port@7  { codec7_ep:  endpoint { remote-endpoint = <&c2cb_ep>; }; };
    219			port@8  { bitclock-master;
    220				  frame-master;
    221				  codec8_ep:  endpoint { remote-endpoint = <&mc2c00_ep>; }; };
    222			port@9  { codec9_ep:  endpoint { remote-endpoint = <&mc2c01_ep>; }; };
    223			port@10 { codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; };
    224			port@11 { codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; };
    225		};
    226	};
    227};