1*15ec87e0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0 2*15ec87e0SKuninori Morimoto/* 3*15ec87e0SKuninori Morimoto * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split) 4*15ec87e0SKuninori Morimoto * 5*15ec87e0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp. 6*15ec87e0SKuninori Morimoto */ 7*15ec87e0SKuninori Morimoto 8*15ec87e0SKuninori Morimoto/* 9*15ec87e0SKuninori Morimoto * Note: 10*15ec87e0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices 11*15ec87e0SKuninori Morimoto * 12*15ec87e0SKuninori Morimoto * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 13*15ec87e0SKuninori Morimoto * (B) CPU1 (2ch) --/ (MIX-1) 14*15ec87e0SKuninori Morimoto * 15*15ec87e0SKuninori Morimoto * (A) aplay -D plughw:0,0 xxx.wav 16*15ec87e0SKuninori Morimoto * (B) aplay -D plughw:0,1 xxx.wav 17*15ec87e0SKuninori Morimoto * 18*15ec87e0SKuninori Morimoto * (A) arecord -D plughw:0,0 xxx.wav 19*15ec87e0SKuninori Morimoto */ 20*15ec87e0SKuninori Morimoto/ { 21*15ec87e0SKuninori Morimoto sound_card: sound { 22*15ec87e0SKuninori Morimoto compatible = "audio-graph-card2"; 23*15ec87e0SKuninori Morimoto label = "rcar-sound"; 24*15ec87e0SKuninori Morimoto 25*15ec87e0SKuninori Morimoto routing = "ak4613 Playback", "DAI0 Playback", 26*15ec87e0SKuninori Morimoto "ak4613 Playback", "DAI1 Playback", 27*15ec87e0SKuninori Morimoto "DAI0 Capture", "ak4613 Capture"; 28*15ec87e0SKuninori Morimoto 29*15ec87e0SKuninori Morimoto /delete-property/ dais; 30*15ec87e0SKuninori Morimoto links = <&fe_a /* (A) CPU0 */ 31*15ec87e0SKuninori Morimoto &fe_b /* (B) CPU1 */ 32*15ec87e0SKuninori Morimoto &be_x /* (X) ak4613 */ 33*15ec87e0SKuninori Morimoto >; 34*15ec87e0SKuninori Morimoto 35*15ec87e0SKuninori Morimoto dpcm { 36*15ec87e0SKuninori Morimoto #address-cells = <1>; 37*15ec87e0SKuninori Morimoto #size-cells = <0>; 38*15ec87e0SKuninori Morimoto 39*15ec87e0SKuninori Morimoto ports@0 { 40*15ec87e0SKuninori Morimoto #address-cells = <1>; 41*15ec87e0SKuninori Morimoto #size-cells = <0>; 42*15ec87e0SKuninori Morimoto reg = <0>; 43*15ec87e0SKuninori Morimoto /* 44*15ec87e0SKuninori Morimoto * FE 45*15ec87e0SKuninori Morimoto * (A) CPU0 (MIX-0) 46*15ec87e0SKuninori Morimoto * (B) CPU1 (MIX-1) 47*15ec87e0SKuninori Morimoto */ 48*15ec87e0SKuninori Morimoto fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; }; 49*15ec87e0SKuninori Morimoto fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; }; 50*15ec87e0SKuninori Morimoto }; 51*15ec87e0SKuninori Morimoto 52*15ec87e0SKuninori Morimoto ports@1 { 53*15ec87e0SKuninori Morimoto #address-cells = <1>; 54*15ec87e0SKuninori Morimoto #size-cells = <0>; 55*15ec87e0SKuninori Morimoto reg = <1>; 56*15ec87e0SKuninori Morimoto /* 57*15ec87e0SKuninori Morimoto * BE 58*15ec87e0SKuninori Morimoto * (X) ak4613 59*15ec87e0SKuninori Morimoto */ 60*15ec87e0SKuninori Morimoto be_x: port@0 { reg = <0>; be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; }; 61*15ec87e0SKuninori Morimoto }; 62*15ec87e0SKuninori Morimoto }; 63*15ec87e0SKuninori Morimoto }; 64*15ec87e0SKuninori Morimoto}; 65*15ec87e0SKuninori Morimoto 66*15ec87e0SKuninori Morimoto&ak4613 { 67*15ec87e0SKuninori Morimoto port { 68*15ec87e0SKuninori Morimoto /* 69*15ec87e0SKuninori Morimoto * (X) ak4613 70*15ec87e0SKuninori Morimoto */ 71*15ec87e0SKuninori Morimoto prefix = "ak4613"; 72*15ec87e0SKuninori Morimoto convert-rate = <48000>; 73*15ec87e0SKuninori Morimoto 74*15ec87e0SKuninori Morimoto ak4613_x_ep: endpoint { 75*15ec87e0SKuninori Morimoto remote-endpoint = <&be_x_ep>; 76*15ec87e0SKuninori Morimoto }; 77*15ec87e0SKuninori Morimoto }; 78*15ec87e0SKuninori Morimoto}; 79*15ec87e0SKuninori Morimoto 80*15ec87e0SKuninori Morimoto&rcar_sound { 81*15ec87e0SKuninori Morimoto ports { 82*15ec87e0SKuninori Morimoto #address-cells = <1>; 83*15ec87e0SKuninori Morimoto #size-cells = <0>; 84*15ec87e0SKuninori Morimoto 85*15ec87e0SKuninori Morimoto /* 86*15ec87e0SKuninori Morimoto * (A) CPU0 87*15ec87e0SKuninori Morimoto */ 88*15ec87e0SKuninori Morimoto port@0 { 89*15ec87e0SKuninori Morimoto reg = <0>; 90*15ec87e0SKuninori Morimoto rsnd_a_ep: endpoint { 91*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_a_ep>; 92*15ec87e0SKuninori Morimoto bitclock-master; 93*15ec87e0SKuninori Morimoto frame-master; 94*15ec87e0SKuninori Morimoto playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>; 95*15ec87e0SKuninori Morimoto capture = <&ssi1 &src0 &dvc1>; 96*15ec87e0SKuninori Morimoto }; 97*15ec87e0SKuninori Morimoto }; 98*15ec87e0SKuninori Morimoto /* 99*15ec87e0SKuninori Morimoto * (B) CPU1 100*15ec87e0SKuninori Morimoto */ 101*15ec87e0SKuninori Morimoto port@1 { 102*15ec87e0SKuninori Morimoto reg = <1>; 103*15ec87e0SKuninori Morimoto rsnd_b_ep: endpoint { 104*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_b_ep>; 105*15ec87e0SKuninori Morimoto bitclock-master; 106*15ec87e0SKuninori Morimoto frame-master; 107*15ec87e0SKuninori Morimoto playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; 108*15ec87e0SKuninori Morimoto }; 109*15ec87e0SKuninori Morimoto }; 110*15ec87e0SKuninori Morimoto }; 111*15ec87e0SKuninori Morimoto}; 112