162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (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) CPU3 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 1562306a36Sopenharmony_ci * (D) CPU2 (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&sound_card { 3162306a36Sopenharmony_ci routing = "ak4613 Playback", "DAI0 Playback", 3262306a36Sopenharmony_ci "ak4613 Playback", "DAI1 Playback", 3362306a36Sopenharmony_ci "DAI0 Capture", "ak4613 Capture", 3462306a36Sopenharmony_ci "pcm3168a Playback", "DAI2 Playback", 3562306a36Sopenharmony_ci "pcm3168a Playback", "DAI3 Playback", 3662306a36Sopenharmony_ci "pcm3168a Playback", "DAI4 Playback", 3762306a36Sopenharmony_ci "pcm3168a Playback", "DAI5 Playback", 3862306a36Sopenharmony_ci "DAI6 Capture", "pcm3168a Capture"; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci /delete-property/ dais; 4162306a36Sopenharmony_ci links = <&fe_a /* (A) CPU0 */ 4262306a36Sopenharmony_ci &fe_b /* (B) CPU1 */ 4362306a36Sopenharmony_ci &fe_c /* (C) CPU2 */ 4462306a36Sopenharmony_ci &fe_d /* (D) CPU3 */ 4562306a36Sopenharmony_ci &fe_e /* (E) CPU4 */ 4662306a36Sopenharmony_ci &fe_f /* (F) CPU5 */ 4762306a36Sopenharmony_ci &rsnd_g /* (G) CPU6 */ 4862306a36Sopenharmony_ci &be_x /* (X) ak4613 */ 4962306a36Sopenharmony_ci &be_y /* (Y) PCM3168A-p */ 5062306a36Sopenharmony_ci >; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci dpcm { 5362306a36Sopenharmony_ci ports@0 { 5462306a36Sopenharmony_ci /* 5562306a36Sopenharmony_ci * FE 5662306a36Sopenharmony_ci * 5762306a36Sopenharmony_ci * (A)/(B) are defined on ulcb 5862306a36Sopenharmony_ci * (C) CPU2 5962306a36Sopenharmony_ci * (D) CPU3 6062306a36Sopenharmony_ci * (E) CPU4 6162306a36Sopenharmony_ci * (F) CPU5 6262306a36Sopenharmony_ci */ 6362306a36Sopenharmony_ci fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; 6462306a36Sopenharmony_ci fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; 6562306a36Sopenharmony_ci fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; 6662306a36Sopenharmony_ci fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; 6762306a36Sopenharmony_ci }; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci ports@1 { 7062306a36Sopenharmony_ci /* 7162306a36Sopenharmony_ci * BE 7262306a36Sopenharmony_ci * 7362306a36Sopenharmony_ci * (X) is defined on ulcb 7462306a36Sopenharmony_ci * (Y) PCM3168A-p 7562306a36Sopenharmony_ci */ 7662306a36Sopenharmony_ci be_y: port@1 { reg = <1>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci }; 7962306a36Sopenharmony_ci}; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci&pcm3168a { 8262306a36Sopenharmony_ci ports { 8362306a36Sopenharmony_ci #address-cells = <1>; 8462306a36Sopenharmony_ci #size-cells = <0>; 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci mclk-fs = <512>; 8762306a36Sopenharmony_ci prefix = "pcm3168a"; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci /* 9062306a36Sopenharmony_ci * (Y) PCM3168A-p 9162306a36Sopenharmony_ci */ 9262306a36Sopenharmony_ci port@0 { 9362306a36Sopenharmony_ci reg = <0>; 9462306a36Sopenharmony_ci convert-channels = <8>; /* to 8ch TDM */ 9562306a36Sopenharmony_ci pcm3168a_y_ep: endpoint { 9662306a36Sopenharmony_ci remote-endpoint = <&be_y_ep>; 9762306a36Sopenharmony_ci clocks = <&clksndsel>; 9862306a36Sopenharmony_ci }; 9962306a36Sopenharmony_ci }; 10062306a36Sopenharmony_ci /* 10162306a36Sopenharmony_ci * (Z) PCM3168A-c 10262306a36Sopenharmony_ci */ 10362306a36Sopenharmony_ci port@1 { 10462306a36Sopenharmony_ci reg = <1>; 10562306a36Sopenharmony_ci pcm3168a_z_ep: endpoint { 10662306a36Sopenharmony_ci remote-endpoint = <&rsnd_g_ep>; 10762306a36Sopenharmony_ci clocks = <&clksndsel>; 10862306a36Sopenharmony_ci }; 10962306a36Sopenharmony_ci }; 11062306a36Sopenharmony_ci }; 11162306a36Sopenharmony_ci}; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci&rcar_sound { 11462306a36Sopenharmony_ci ports { 11562306a36Sopenharmony_ci /* (A)/(B) are defined in ulcb.dtsi */ 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci /* 11862306a36Sopenharmony_ci * (C) CPU2 11962306a36Sopenharmony_ci */ 12062306a36Sopenharmony_ci port@2 { 12162306a36Sopenharmony_ci reg = <2>; 12262306a36Sopenharmony_ci rsnd_c_ep: endpoint { 12362306a36Sopenharmony_ci remote-endpoint = <&fe_c_ep>; 12462306a36Sopenharmony_ci bitclock-master; 12562306a36Sopenharmony_ci frame-master; 12662306a36Sopenharmony_ci playback = <&ssiu30 &ssi3>; 12762306a36Sopenharmony_ci }; 12862306a36Sopenharmony_ci }; 12962306a36Sopenharmony_ci /* 13062306a36Sopenharmony_ci * (D) CPU3 13162306a36Sopenharmony_ci */ 13262306a36Sopenharmony_ci port@3 { 13362306a36Sopenharmony_ci reg = <3>; 13462306a36Sopenharmony_ci rsnd_d_ep: endpoint { 13562306a36Sopenharmony_ci remote-endpoint = <&fe_d_ep>; 13662306a36Sopenharmony_ci bitclock-master; 13762306a36Sopenharmony_ci frame-master; 13862306a36Sopenharmony_ci playback = <&ssiu31 &ssi3>; 13962306a36Sopenharmony_ci }; 14062306a36Sopenharmony_ci }; 14162306a36Sopenharmony_ci /* 14262306a36Sopenharmony_ci * (E) CPU4 14362306a36Sopenharmony_ci */ 14462306a36Sopenharmony_ci port@4 { 14562306a36Sopenharmony_ci reg = <4>; 14662306a36Sopenharmony_ci rsnd_e_ep: endpoint { 14762306a36Sopenharmony_ci remote-endpoint = <&fe_e_ep>; 14862306a36Sopenharmony_ci bitclock-master; 14962306a36Sopenharmony_ci frame-master; 15062306a36Sopenharmony_ci playback = <&ssiu32 &ssi3>; 15162306a36Sopenharmony_ci }; 15262306a36Sopenharmony_ci }; 15362306a36Sopenharmony_ci /* 15462306a36Sopenharmony_ci * (F) CPU5 15562306a36Sopenharmony_ci */ 15662306a36Sopenharmony_ci port@5 { 15762306a36Sopenharmony_ci reg = <5>; 15862306a36Sopenharmony_ci rsnd_f_ep: endpoint { 15962306a36Sopenharmony_ci remote-endpoint = <&fe_f_ep>; 16062306a36Sopenharmony_ci bitclock-master; 16162306a36Sopenharmony_ci frame-master; 16262306a36Sopenharmony_ci playback = <&ssiu33 &ssi3>; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci }; 16562306a36Sopenharmony_ci /* 16662306a36Sopenharmony_ci * (G) CPU6 16762306a36Sopenharmony_ci */ 16862306a36Sopenharmony_ci rsnd_g: port@6 { 16962306a36Sopenharmony_ci reg = <6>; 17062306a36Sopenharmony_ci rsnd_g_ep: endpoint { 17162306a36Sopenharmony_ci remote-endpoint = <&pcm3168a_z_ep>; 17262306a36Sopenharmony_ci bitclock-master; 17362306a36Sopenharmony_ci frame-master; 17462306a36Sopenharmony_ci capture = <&ssi4>; 17562306a36Sopenharmony_ci }; 17662306a36Sopenharmony_ci }; 17762306a36Sopenharmony_ci }; 17862306a36Sopenharmony_ci}; 179