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 Card" DT setting file for ULCB/KF. > 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-card.dtsi > +&ak4613 { > + #sound-dai-cells = <0>; > + > + port { > + /* > + * (A) CPU0 <-> ak4613 > + */ > + ak4613_endpoint: endpoint { > + remote-endpoint = <&rsnd_for_ak4613>; > + }; > + }; > +}; > + > +&hdmi0 { > + ports { > + port@2 { > + /* > + * (B) CPU1 <-> HDMI As this is used for playback only, "CPU1 -> HDMI"? > + */ > + dw_hdmi0_snd_in: endpoint { > + remote-endpoint = <&rsnd_for_hdmi>; > + }; > + }; > + }; > +}; > + > +&rcar_sound { > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + rsnd_port0: port@0 { > + /* > + * (A) CPU0 <-> ak4613 > + */ > + reg = <0>; > + rsnd_for_ak4613: endpoint { > + remote-endpoint = <&ak4613_endpoint>; > + bitclock-master; > + frame-master; > + playback = <&ssi0>, <&src0>, <&dvc0>; > + capture = <&ssi1>, <&src1>, <&dvc1>; > + }; > + }; > + rsnd_port1: port@1 { > + /* > + * (B) CPU1 <-> HDMI CPU1 -> HDMI > + */ > + reg = <1>; > + rsnd_for_hdmi: endpoint { > + remote-endpoint = <&dw_hdmi0_snd_in>; > + bitclock-master; > + frame-master; > + playback = <&ssi2>; > + }; > + }; > + }; > +}; > --- /dev/null > +++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi > +&pcm3168a { > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + mclk-fs = <512>; > + /* > + * (C) CPU2 <-> PCM3168A-p CPU2 -> PCM3168A-p > + */ > + port@0 { > + reg = <0>; > + pcm3168a_endpoint_p: endpoint { > + remote-endpoint = <&rsnd_for_pcm3168a_play>; > + clocks = <&clksndsel>; > + }; > + }; > + /* > + * (D) CPU3 <-> PCM3168A-c As this is used for capture only, "CPU3 <- PCM3168A-c"? > + */ > + port@1 { > + reg = <1>; > + pcm3168a_endpoint_c: endpoint { > + remote-endpoint = <&rsnd_for_pcm3168a_capture>; > + clocks = <&clksndsel>; > + }; > + }; > + }; > +}; > + > +&rcar_sound { > + ports { > + /* rsnd_port0/1 are defined in ulcb.dtsi */ > + /* > + * (C) CPU2 <-> PCM3168A-p CPU2 -> PCM3168A-p > + */ > + rsnd_port2: port@2 { > + reg = <2>; > + rsnd_for_pcm3168a_play: endpoint { > + remote-endpoint = <&pcm3168a_endpoint_p>; > + bitclock-master; > + frame-master; > + dai-tdm-slot-num = <8>; > + playback = <&ssi3>; > + }; > + }; > + /* > + * (D) CPU3 <-> PCM3168A-c CPU3 <- PCM3168A-c > + */ > + rsnd_port3: port@3 { > + reg = <3>; > + rsnd_for_pcm3168a_capture: endpoint { > + remote-endpoint = <&pcm3168a_endpoint_c>; > + bitclock-master; > + frame-master; > + dai-tdm-slot-num = <6>; > + capture = <&ssi4>; > + }; > + }; > + }; > +}; 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