Message ID | 875ydbi40l.wl-kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 6d430db3f7087635dd3d3405f07600b9b28da208 |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | arm64: dts: renesas: Simple-Card / Audio-Graph-Card/Card2 dts for ULCB/KF | expand |
Hi Morimoto-san, On Fri, Jan 13, 2023 at 3:04 AM Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > 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 + 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. > > Link: https://lore.kernel.org/r/874jtypxfp.wl-kuninori.morimoto.gx@renesas.com > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Thanks for your patch! > --- /dev/null > +++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi > @@ -0,0 +1,91 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Device Tree for ULCB + Audio Graph Card (MIX) > + * > + * 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) Shouldn't that be "<--/" (also in the other mix+split patches)? No worries, I can fix all of these while applying. > + * (C) CPU3 (2ch) ----> (8ch) (Y) > + * > + * (A) aplay -D plughw:0,0 xxx.wav > + * (B) aplay -D plughw:0,1 xxx.wav > + * > + * (A) arecord -D plughw:0,0 xxx.wav > + */ > --- /dev/null > +++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi > + /* > + * (Z) PCM3168A-c > + */ > + port@1 { > + reg = <1>; > + /* (G) CPU6 <-> PCM3168A-c */ "<-". > + pcm3168a_endpoint_c: endpoint { > + remote-endpoint = <&rsnd_for_pcm3168a_capture>; > + clocks = <&clksndsel>; > + }; > + }; > + }; > +}; The rest LGTM, so Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v6.3. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org 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
Hi Geert > > +/* > > + * Note: > > + * Because there is subdevice maximum, it will ignore HDMI output > > + * > > + * (A) CPU0 (2ch) <-----> (2ch) (X) ak4613 (MIX-0) > > + * (B) CPU1 (2ch) --/ (MIX-1) > > Shouldn't that be "<--/" (also in the other mix+split patches)? > No worries, I can fix all of these while applying. (A) can handle both playback/capture, but (B) can handle only playback. So, above allow is correct. > > + reg = <1>; > > + /* (G) CPU6 <-> PCM3168A-c */ > > "<-". Oops, indeed. Thank you for pointing it, and thank you for fixing Thank you for your help !! Best regards --- Kuninori Morimoto
Hi Morimoto-san, On Tue, Jan 17, 2023 at 12:12 AM Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote: > > > +/* > > > + * Note: > > > + * Because there is subdevice maximum, it will ignore HDMI output > > > + * > > > + * (A) CPU0 (2ch) <-----> (2ch) (X) ak4613 (MIX-0) > > > + * (B) CPU1 (2ch) --/ (MIX-1) > > > > Shouldn't that be "<--/" (also in the other mix+split patches)? > > No worries, I can fix all of these while applying. > > (A) can handle both playback/capture, but > (B) can handle only playback. > So, above allow is correct. OK > > > + /* (B) CPU1 <-> (X) ak4613 */ So the above arrow should be "->", too? > > > + ak4613_ep2: endpoint@1 { Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org 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
Hi Geert > > > > + /* (B) CPU1 <-> (X) ak4613 */ > > So the above arrow should be "->", too? Oops, Yes. Thank you for pointing it, and thank you for fixing it. Thank you for your help !! Best regards --- Kuninori Morimoto
diff --git a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi new file mode 100644 index 000000000000..88daded1975b --- /dev/null +++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree for ULCB + Audio Graph Card (MIX) + * + * 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-scu-card"; + label = "rcar-sound"; + + routing = "ak4613 Playback", "DAI0 Playback", + "ak4613 Playback", "DAI1 Playback", + "DAI0 Capture", "ak4613 Capture"; + + dais = <&rsnd_port0 /* (A) CPU0 */ + &rsnd_port1 /* (B) CPU1 */ + >; + }; +}; + +&ak4613 { + port { + #address-cells = <1>; + #size-cells = <0>; + + /* + * (X) ak4613 + */ + prefix = "ak4613"; + convert-rate = <48000>; + + /* (A) CPU0 <-> (X) ak4613 */ + ak4613_ep1: endpoint@0 { + reg = <0>; + remote-endpoint = <&rsnd_for_ak4613_1>; + }; + /* (B) CPU1 <-> (X) ak4613 */ + ak4613_ep2: endpoint@1 { + reg = <1>; + remote-endpoint = <&rsnd_for_ak4613_2>; + }; + }; +}; + +&rcar_sound { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* + * (A) CPU0 + */ + rsnd_port0: port@0 { + reg = <0>; + rsnd_for_ak4613_1: endpoint { + remote-endpoint = <&ak4613_ep1>; + bitclock-master; + frame-master; + playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>; + capture = <&ssi1 &src0 &dvc1>; + }; + }; + /* + * (B) CPU1 + */ + rsnd_port1: port@1 { + reg = <1>; + rsnd_for_ak4613_2: endpoint { + remote-endpoint = <&ak4613_ep2>; + bitclock-master; + frame-master; + playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi new file mode 100644 index 000000000000..4fb3ba08a585 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree for ULCB + Kingfisher + Audio Graph Card (MIX + TDM Split) + * + * Copyright (C) 2022 Renesas Electronics Corp. + */ + +/* + * Because it reach to subdevice maximum, it ignore HDMI + * + * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) + * (B) CPU1 (2ch) --/ (MIX-1) + * (C) CPU2 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) + * (D) CPU3 (2ch) --/ (TDM-1 : 2,3ch) + * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) + * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) + * (G) CPU6 (6ch) <---- (6ch) (Z) PCM3168A-c + * + * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) + * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) + * (C) aplay -D plughw:0,2 xxx.wav (TDM-0) + * (D) aplay -D plughw:0,3 xxx.wav (TDM-1) + * (E) aplay -D plughw:0,4 xxx.wav (TDM-2) + * (F) aplay -D plughw:0,5 xxx.wav (TDM-3) + * + * (A) arecord -D plughw:0,0 xxx.wav + * (G) arecord -D plughw:0,6 xxx.wav + */ + +&sound_card { + routing = "ak4613 Playback", "DAI0 Playback", + "ak4613 Playback", "DAI1 Playback", + "DAI0 Capture", "ak4613 Capture", + "pcm3168a Playback", "DAI2 Playback", + "pcm3168a Playback", "DAI3 Playback", + "pcm3168a Playback", "DAI4 Playback", + "pcm3168a Playback", "DAI5 Playback"; + + dais = <&rsnd_port0 /* (A) CPU0 */ + &rsnd_port1 /* (B) CPU1 */ + &rsnd_port2 /* (C) CPU2 */ + &rsnd_port3 /* (D) CPU3 */ + &rsnd_port4 /* (E) CPU4 */ + &rsnd_port5 /* (F) CPU5 */ + &rsnd_port6 /* (G) GPU6 */ + >; +}; + +&pcm3168a { + ports { + #address-cells = <1>; + #size-cells = <0>; + mclk-fs = <512>; + + /* + * (Y) PCM3168A-p + */ + port@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + prefix = "pcm3168a"; + convert-channels = <8>; /* to 8ch TDM */ + + /* (C) CPU2 -> (Y) PCM3168A-p */ + pcm3168a_endpoint_p1: endpoint@0 { + reg = <0>; + remote-endpoint = <&rsnd_for_pcm3168a_play1>; + clocks = <&clksndsel>; + }; + /* (D) CPU3 -> (Y) PCM3168A-p */ + pcm3168a_endpoint_p2: endpoint@1 { + reg = <1>; + remote-endpoint = <&rsnd_for_pcm3168a_play2>; + clocks = <&clksndsel>; + }; + /* (E) CPU4 -> (Y) PCM3168A-p */ + pcm3168a_endpoint_p3: endpoint@2 { + reg = <2>; + remote-endpoint = <&rsnd_for_pcm3168a_play3>; + clocks = <&clksndsel>; + }; + /* (F) CPU5 -> (Y) PCM3168A-p */ + pcm3168a_endpoint_p4: endpoint@3 { + reg = <3>; + remote-endpoint = <&rsnd_for_pcm3168a_play4>; + clocks = <&clksndsel>; + }; + }; + /* + * (Z) PCM3168A-c + */ + port@1 { + reg = <1>; + /* (G) CPU6 <-> PCM3168A-c */ + 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 + */ + rsnd_port2: port@2 { + reg = <2>; + rsnd_for_pcm3168a_play1: endpoint { + remote-endpoint = <&pcm3168a_endpoint_p1>; + bitclock-master; + frame-master; + playback = <&ssiu30 &ssi3>; + }; + }; + /* + * (D) CPU3 + */ + rsnd_port3: port@3 { + reg = <3>; + rsnd_for_pcm3168a_play2: endpoint { + remote-endpoint = <&pcm3168a_endpoint_p2>; + bitclock-master; + frame-master; + playback = <&ssiu31 &ssi3>; + }; + }; + /* + * (E) CPU4 + */ + rsnd_port4: port@4 { + reg = <4>; + rsnd_for_pcm3168a_play3: endpoint { + remote-endpoint = <&pcm3168a_endpoint_p3>; + bitclock-master; + frame-master; + playback = <&ssiu32 &ssi3>; + }; + }; + /* + * (F) CPU5 + */ + rsnd_port5: port@5 { + reg = <5>; + rsnd_for_pcm3168a_play4: endpoint { + remote-endpoint = <&pcm3168a_endpoint_p4>; + bitclock-master; + frame-master; + playback = <&ssiu33 &ssi3>; + }; + }; + /* + * (G) CPU6 + */ + rsnd_port6: port@6 { + reg = <6>; + rsnd_for_pcm3168a_capture: endpoint { + remote-endpoint = <&pcm3168a_endpoint_c>; + bitclock-master; + frame-master; + dai-tdm-slot-num = <6>; + capture = <&ssi4>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 25098efd6b89..08242d3dee3f 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -449,6 +449,7 @@ &xhci0 { * * #include "ulcb-kf-simple-audio-card.dtsi" * #include "ulcb-kf-audio-graph-card.dtsi" + * #include "ulcb-kf-audio-graph-card-mix+split.dtsi" * #include "ulcb-kf-audio-graph-card2-mix+split.dtsi" */ #include "ulcb-kf-audio-graph-card2.dtsi" diff --git a/arch/arm64/boot/dts/renesas/ulcb.dtsi b/arch/arm64/boot/dts/renesas/ulcb.dtsi index bb93ba4ff946..172d065d70bb 100644 --- a/arch/arm64/boot/dts/renesas/ulcb.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb.dtsi @@ -495,6 +495,7 @@ &usb2_phy1 { * * #include "ulcb-simple-audio-card.dtsi" * #include "ulcb-audio-graph-card.dtsi" + * #include "ulcb-audio-graph-card-mix+split.dtsi" * #include "ulcb-audio-graph-card2-mix+split.dtsi" */ #include "ulcb-audio-graph-card2.dtsi"