162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Device Tree for ULCB + Kingfisher + Audio Graph Card (MIX + TDM Split) 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2022 Renesas Electronics Corp. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci * Note: 1062306a36Sopenharmony_ci * The HDMI output is ignored due to the limited number of subdevices 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 1362306a36Sopenharmony_ci * (B) CPU1 (2ch) --/ (MIX-1) 1462306a36Sopenharmony_ci * (C) CPU2 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 1562306a36Sopenharmony_ci * (D) CPU3 (2ch) --/ (TDM-1 : 2,3ch) 1662306a36Sopenharmony_ci * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) 1762306a36Sopenharmony_ci * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) 1862306a36Sopenharmony_ci * (G) CPU6 (6ch) <---- (6ch) (Z) PCM3168A-c 1962306a36Sopenharmony_ci * 2062306a36Sopenharmony_ci * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 2162306a36Sopenharmony_ci * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 2262306a36Sopenharmony_ci * (C) aplay -D plughw:0,2 xxx.wav (TDM-0) 2362306a36Sopenharmony_ci * (D) aplay -D plughw:0,3 xxx.wav (TDM-1) 2462306a36Sopenharmony_ci * (E) aplay -D plughw:0,4 xxx.wav (TDM-2) 2562306a36Sopenharmony_ci * (F) aplay -D plughw:0,5 xxx.wav (TDM-3) 2662306a36Sopenharmony_ci * 2762306a36Sopenharmony_ci * (A) arecord -D plughw:0,0 xxx.wav 2862306a36Sopenharmony_ci * (G) arecord -D plughw:0,6 xxx.wav 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci&sound_card { 3262306a36Sopenharmony_ci routing = "ak4613 Playback", "DAI0 Playback", 3362306a36Sopenharmony_ci "ak4613 Playback", "DAI1 Playback", 3462306a36Sopenharmony_ci "DAI0 Capture", "ak4613 Capture", 3562306a36Sopenharmony_ci "pcm3168a Playback", "DAI2 Playback", 3662306a36Sopenharmony_ci "pcm3168a Playback", "DAI3 Playback", 3762306a36Sopenharmony_ci "pcm3168a Playback", "DAI4 Playback", 3862306a36Sopenharmony_ci "pcm3168a Playback", "DAI5 Playback"; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci dais = <&rsnd_port0 /* (A) CPU0 */ 4162306a36Sopenharmony_ci &rsnd_port1 /* (B) CPU1 */ 4262306a36Sopenharmony_ci &rsnd_port2 /* (C) CPU2 */ 4362306a36Sopenharmony_ci &rsnd_port3 /* (D) CPU3 */ 4462306a36Sopenharmony_ci &rsnd_port4 /* (E) CPU4 */ 4562306a36Sopenharmony_ci &rsnd_port5 /* (F) CPU5 */ 4662306a36Sopenharmony_ci &rsnd_port6 /* (G) GPU6 */ 4762306a36Sopenharmony_ci >; 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci&pcm3168a { 5162306a36Sopenharmony_ci ports { 5262306a36Sopenharmony_ci #address-cells = <1>; 5362306a36Sopenharmony_ci #size-cells = <0>; 5462306a36Sopenharmony_ci mclk-fs = <512>; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci /* 5762306a36Sopenharmony_ci * (Y) PCM3168A-p 5862306a36Sopenharmony_ci */ 5962306a36Sopenharmony_ci port@0 { 6062306a36Sopenharmony_ci #address-cells = <1>; 6162306a36Sopenharmony_ci #size-cells = <0>; 6262306a36Sopenharmony_ci reg = <0>; 6362306a36Sopenharmony_ci prefix = "pcm3168a"; 6462306a36Sopenharmony_ci convert-channels = <8>; /* to 8ch TDM */ 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci /* (C) CPU2 -> (Y) PCM3168A-p */ 6762306a36Sopenharmony_ci pcm3168a_endpoint_p1: endpoint@0 { 6862306a36Sopenharmony_ci reg = <0>; 6962306a36Sopenharmony_ci remote-endpoint = <&rsnd_for_pcm3168a_play1>; 7062306a36Sopenharmony_ci clocks = <&clksndsel>; 7162306a36Sopenharmony_ci }; 7262306a36Sopenharmony_ci /* (D) CPU3 -> (Y) PCM3168A-p */ 7362306a36Sopenharmony_ci pcm3168a_endpoint_p2: endpoint@1 { 7462306a36Sopenharmony_ci reg = <1>; 7562306a36Sopenharmony_ci remote-endpoint = <&rsnd_for_pcm3168a_play2>; 7662306a36Sopenharmony_ci clocks = <&clksndsel>; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci /* (E) CPU4 -> (Y) PCM3168A-p */ 7962306a36Sopenharmony_ci pcm3168a_endpoint_p3: endpoint@2 { 8062306a36Sopenharmony_ci reg = <2>; 8162306a36Sopenharmony_ci remote-endpoint = <&rsnd_for_pcm3168a_play3>; 8262306a36Sopenharmony_ci clocks = <&clksndsel>; 8362306a36Sopenharmony_ci }; 8462306a36Sopenharmony_ci /* (F) CPU5 -> (Y) PCM3168A-p */ 8562306a36Sopenharmony_ci pcm3168a_endpoint_p4: endpoint@3 { 8662306a36Sopenharmony_ci reg = <3>; 8762306a36Sopenharmony_ci remote-endpoint = <&rsnd_for_pcm3168a_play4>; 8862306a36Sopenharmony_ci clocks = <&clksndsel>; 8962306a36Sopenharmony_ci }; 9062306a36Sopenharmony_ci }; 9162306a36Sopenharmony_ci /* 9262306a36Sopenharmony_ci * (Z) PCM3168A-c 9362306a36Sopenharmony_ci */ 9462306a36Sopenharmony_ci port@1 { 9562306a36Sopenharmony_ci reg = <1>; 9662306a36Sopenharmony_ci /* (G) CPU6 <- PCM3168A-c */ 9762306a36Sopenharmony_ci pcm3168a_endpoint_c: endpoint { 9862306a36Sopenharmony_ci remote-endpoint = <&rsnd_for_pcm3168a_capture>; 9962306a36Sopenharmony_ci clocks = <&clksndsel>; 10062306a36Sopenharmony_ci }; 10162306a36Sopenharmony_ci }; 10262306a36Sopenharmony_ci }; 10362306a36Sopenharmony_ci}; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci&rcar_sound { 10662306a36Sopenharmony_ci ports { 10762306a36Sopenharmony_ci /* rsnd_port0-1 are defined in ulcb.dtsi */ 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci /* 11062306a36Sopenharmony_ci * (C) CPU2 11162306a36Sopenharmony_ci */ 11262306a36Sopenharmony_ci rsnd_port2: port@2 { 11362306a36Sopenharmony_ci reg = <2>; 11462306a36Sopenharmony_ci rsnd_for_pcm3168a_play1: endpoint { 11562306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_endpoint_p1>; 11662306a36Sopenharmony_ci bitclock-master; 11762306a36Sopenharmony_ci frame-master; 11862306a36Sopenharmony_ci playback = <&ssiu30 &ssi3>; 11962306a36Sopenharmony_ci }; 12062306a36Sopenharmony_ci }; 12162306a36Sopenharmony_ci /* 12262306a36Sopenharmony_ci * (D) CPU3 12362306a36Sopenharmony_ci */ 12462306a36Sopenharmony_ci rsnd_port3: port@3 { 12562306a36Sopenharmony_ci reg = <3>; 12662306a36Sopenharmony_ci rsnd_for_pcm3168a_play2: endpoint { 12762306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_endpoint_p2>; 12862306a36Sopenharmony_ci bitclock-master; 12962306a36Sopenharmony_ci frame-master; 13062306a36Sopenharmony_ci playback = <&ssiu31 &ssi3>; 13162306a36Sopenharmony_ci }; 13262306a36Sopenharmony_ci }; 13362306a36Sopenharmony_ci /* 13462306a36Sopenharmony_ci * (E) CPU4 13562306a36Sopenharmony_ci */ 13662306a36Sopenharmony_ci rsnd_port4: port@4 { 13762306a36Sopenharmony_ci reg = <4>; 13862306a36Sopenharmony_ci rsnd_for_pcm3168a_play3: endpoint { 13962306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_endpoint_p3>; 14062306a36Sopenharmony_ci bitclock-master; 14162306a36Sopenharmony_ci frame-master; 14262306a36Sopenharmony_ci playback = <&ssiu32 &ssi3>; 14362306a36Sopenharmony_ci }; 14462306a36Sopenharmony_ci }; 14562306a36Sopenharmony_ci /* 14662306a36Sopenharmony_ci * (F) CPU5 14762306a36Sopenharmony_ci */ 14862306a36Sopenharmony_ci rsnd_port5: port@5 { 14962306a36Sopenharmony_ci reg = <5>; 15062306a36Sopenharmony_ci rsnd_for_pcm3168a_play4: endpoint { 15162306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_endpoint_p4>; 15262306a36Sopenharmony_ci bitclock-master; 15362306a36Sopenharmony_ci frame-master; 15462306a36Sopenharmony_ci playback = <&ssiu33 &ssi3>; 15562306a36Sopenharmony_ci }; 15662306a36Sopenharmony_ci }; 15762306a36Sopenharmony_ci /* 15862306a36Sopenharmony_ci * (G) CPU6 15962306a36Sopenharmony_ci */ 16062306a36Sopenharmony_ci rsnd_port6: port@6 { 16162306a36Sopenharmony_ci reg = <6>; 16262306a36Sopenharmony_ci rsnd_for_pcm3168a_capture: endpoint { 16362306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_endpoint_c>; 16462306a36Sopenharmony_ci bitclock-master; 16562306a36Sopenharmony_ci frame-master; 16662306a36Sopenharmony_ci dai-tdm-slot-num = <6>; 16762306a36Sopenharmony_ci capture = <&ssi4>; 16862306a36Sopenharmony_ci }; 16962306a36Sopenharmony_ci }; 17062306a36Sopenharmony_ci }; 17162306a36Sopenharmony_ci}; 172