Hi Morimoto-san, On Wed, Dec 14, 2022 at 2:48 AM Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > > ALSA SoC has many type of Generic Audio Card driver (Simple Audio Card, > Audio Graph Card, Audio Graph Card2), and Renesas/Kuninori Morimoto want > to test these. > > Generic Audio Card driver had been requested on ALSA SoC. > It has many type of device connection method, and historically, > requested connection support range of generic driver have been > upgraded. > > Upgrading connection support range itself was possible on generic > driver, but could not implemented, because we need to keep compatibility > on Device-Tree. This is one of the reason why we have many type of > Generic Audio Card driver. > > ULCB/KF is good board to test these. > Kuninori has been testing these Generic Audio Card driver by using his > local patch to switching drivers. But it is good idea to upstream these > from information sharing point of view, because DT setting is complex. > It can be good sample for user. This patch is one of them. > > From normal user point of view who don't need to test the driver, > it should keep as-is, nothing changed. > > This patch adds "Audio Graph Card2 + MIXer + TDM Split" DT setting file > for ULCB/KF. Because it reach to subdevice maximum, it ignore HDMI. > We can switch to use it if ulcb.dtsi / ulcb-kf.dtsi were updated. > > Because it needs "switching driver", not "add extra feature", > it doesn't use Device-Tree overlay. > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> Thanks for your patch! > --- /dev/null > +++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi > @@ -0,0 +1,111 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split) > + * > + * Copyright (C) 2022 Renesas Electronics Corp. > + */ > + > +/* > + * Note: > + * Because there is subdevice maximum, it will ignore HDMI output > + * > + * (A) CPU0 (2ch) ------ (2ch) (X) ak4613 (MIX-0) > + * (B) CPU1 (2ch) --/ (MIX-1) > + * > + * (A) aplay -D plughw:0,0 xxx.wav > + * (B) aplay -D plughw:0,1 xxx.wav > + * > + * (A) arecord -D plughw:0,0 xxx.wav > + */ > +/ { > + sound_card: sound { > + compatible = "audio-graph-card2"; > + label = "rcar-sound"; > + > + routing = "ak4613 Playback", "DAI0 Playback", > + "ak4613 Playback", "DAI1 Playback", > + "DAI0 Capture", "ak4613 Capture"; > + > + /delete-property/ dais; > + links = <&fe_a /* (A) CPU0 */ > + &fe_b /* (B) CPU1 */ > + &be_x /* (X) ak4613 */ > + >; > + > + dpcm { > + #address-cells = <1>; > + #size-cells = <0>; > + > + ports@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + /* > + * FE FE = Front End? > + * (A) CPU0 (MIX-0) > + * (B) CPU1 (MIX-1) > + */ > + fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; }; > + fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; }; Please preserve alignment (i.e. insert TAB before fe_[ab] labels). > + }; > + > + ports@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + /* > + * BE Back End? (I guess not Big Endian ;-) > + * (X) ak4613 > + */ > + be_x: port@0 { reg = <0>; be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; }; Likewise > + }; > + }; > + }; > +}; > + > +&ak4613 { > + port { > + /* > + * (X) ak4613 Perhaps add an arrow, and a target, like in the other patches? (everywhere) > + */ > + prefix = "ak4613"; > + convert-rate = <48000>; > + > + ak4613_x_ep: endpoint { > + remote-endpoint = <&be_x_ep>; > + }; > + }; > +}; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds