arm64: dts: renesas: white-hawk: Add R-Car Sound support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 6 Mar 2023 23:49:40 +0000 (23:49 +0000)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 10 Mar 2023 16:01:04 +0000 (17:01 +0100)
Add R-Car Sound support for the White Hawk board with the
ARD-AUDIO-DA7212 external audio board, using a DT overlay.

Signed-off-by: Linh Phung <linh.phung.jy@renesas.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/87o7p5l9t7.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
arch/arm64/boot/dts/renesas/Makefile
arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso [new file with mode: 0644]

index 0699b51..22c1d20 100644 (file)
@@ -67,6 +67,7 @@ dtb-$(CONFIG_ARCH_R8A779A0) += r8a779a0-falcon.dtb
 dtb-$(CONFIG_ARCH_R8A779F0) += r8a779f0-spider.dtb
 
 dtb-$(CONFIG_ARCH_R8A779G0) += r8a779g0-white-hawk.dtb
+dtb-$(CONFIG_ARCH_R8A779G0) += r8a779g0-white-hawk-ard-audio-da7212.dtbo
 
 dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-salvator-xs.dtb
 dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-ulcb.dtb
diff --git a/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso b/arch/arm64/boot/dts/renesas/r8a779g0-white-hawk-ard-audio-da7212.dtso
new file mode 100644 (file)
index 0000000..e6f5337
--- /dev/null
@@ -0,0 +1,187 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the White Hawk board with ARD-AUDIO-DA7212 Board
+ *
+ * You can find and buy "ARD-AUDIO-DA7212" at Digi-Key
+ *
+ *     https://www.digikey.jp/en/products/detail/ARD-AUDIO-DA7212/1564-1021-ND/5456357
+ *
+ * Copyright (C) 2022 Renesas Electronics Corp.
+ *
+ *
+ * [Connection]
+ *
+ * White Hawk                          ARD-AUDIO-DA7212
+ * +----------------------------+
+ * |CPU board                  |
+ * |                           |
+ * |CN40 (IO PIN HEADER)       |
+ * |   AUDIO_CLKIN_V     pin1  |<--\   +---------------+
+ * |(*) GP1_25/SL_SW2_V          pin2  |<--/   |J2             |
+ * |   AUDIO_CLKOUT_V    pin5  |<----->| pin7  MCLK    |
+ * |   SSI_SCK_V         pin9  |<----->| pin1  BCLK    |
+ * |   SSI_WS_V          pin13 |<----->| pin3  WCLK    |
+ * |   SSI_SD_V          pin15 |<----->| pin5  DATIN   | (@)
+ * |                           |   \-->| pin15 DATOUT  | [CAPTURE]
+ * +----------------------------+      +---------------+
+ * +----------------------------+
+ * |Breakout board             |
+ * |                           |       +---------------+
+ * |CN34 (I2C CN)              |       |J1             |
+ * |   I2C0_SCL           pin3 |<----->| pin20 SCL     |
+ * |   I2C0_SDA           pin5 |<----->| pin18 SDA     |
+ * |                           |       +---------------+
+ * |                           |       +-----------------------+
+ * |CN4 (Power)                        |       |J7                     |
+ * |   3v3 (v)            pin9 |<----->| pin4  / pin8  3.3v    |
+ * |   GND (v)     pin3 / pin4 |<----->| pin12 / pin14 GND     |
+ * +----------------------------+      +-----------------------+
+ * (*) GP1_25/SL_SW2_V is used as TPU
+ * (@) Connect to pin5 (DATIN = playback) or pin15 (DATOUT = capture)
+ * (v) These are just sample pins. You can find many 3v3 / GND pins on
+ *     White Hawk board, not only CN4. You can use other pins for it.
+ *
+ * [How to enable]
+ *
+ * You need these configs
+ *
+ *     CONFIG_PWM
+ *     CONFIG_PWM_RENESAS_TPU
+ *     CONFIG_COMMON_CLK_PWM
+ *     CONFIG_SND_SOC_DA7213
+ *
+ * [How to use]
+ *
+ * 44.1kHz groups sound is available by default.
+ * You need to update audio_clkin settings to switch to 48kHz groups sound.
+ * see
+ *     [(C) clock]
+ *
+ * You can use capture if you change the settings
+ * see
+ *     [CAPTURE]
+ *
+ * You need to setup Headphone
+ *
+ *     > amixer set "Headphone" 40%
+ *     > amixer set "Headphone" on
+ *     > amixer set "Mixout Left DAC Left" on
+ *     > amixer set "Mixout Right DAC Right" on
+ */
+
+/dts-v1/;
+/plugin/;
+#include <dt-bindings/clock/r8a779g0-cpg-mssr.h>
+
+&{/} {
+       sound_card: sound {
+               compatible = "audio-graph-card";
+               label = "rcar-sound";
+
+               dais = <&rsnd_port>;    /* DA7212 Audio Codec */
+       };
+
+       tpu_clk: tpu-clk {
+               compatible = "pwm-clock";
+               #clock-cells = <0>;
+
+               /* 44.1kHz groups [(C) clock] */
+               clock-frequency = <11289600>;
+               pwms = <&tpu 0 88 0>;   /* 1000000000 / 88 =~ 11289600 */
+
+               /* 48  kHz groups [(C) clock] */
+//             clock-frequency = <12288000>;
+//             pwms = <&tpu 0 81 0>;   /* 1000000000 / 81 =~ 12288000 */
+       };
+
+};
+
+&pfc {
+       sound_pins: sound {
+               groups = "ssi_ctrl", "ssi_data";
+               function = "ssi";
+       };
+
+       sound_clk_pins: sound-clk {
+               groups = "audio_clkin", "audio_clkout";
+               function = "audio_clk";
+       };
+
+       tpu0_pins: tpu0 {
+               groups = "tpu_to0_a";
+               function = "tpu";
+       };
+};
+
+&tpu {
+       pinctrl-0 = <&tpu0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       codec@1a {
+               compatible = "dlg,da7212";
+
+               #sound-dai-cells = <0>;
+               reg = <0x1a>;
+
+               clocks = <&rcar_sound>;
+               clock-names = "mclk";
+
+               dlg,micbias1-lvl = <2500>;
+               dlg,micbias2-lvl = <2500>;
+               dlg,dmic-data-sel = "lrise_rfall";
+               dlg,dmic-samplephase = "between_clkedge";
+               dlg,dmic-clkrate = <3000000>;
+
+               VDDA-supply   = <&reg_1p8v>;
+               VDDMIC-supply = <&reg_3p3v>;
+               VDDIO-supply  = <&reg_3p3v>;
+
+               port {
+                       da7212_endpoint: endpoint {
+                               remote-endpoint = <&rsnd_endpoint>;
+                       };
+               };
+       };
+};
+
+&rcar_sound {
+       pinctrl-0 = <&sound_clk_pins>, <&sound_pins>;
+       pinctrl-names = "default";
+
+       /* Single DAI */
+       #sound-dai-cells = <0>;
+
+       /* audio_clkout */
+       #clock-cells = <0>;
+       clock-frequency = <5644800>; /* 44.1kHz groups [(C) clock] */
+//     clock-frequency = <6144000>; /* 48  kHz groups [(C) clock] */
+
+       status = "okay";
+
+       /* Update <clkin> to <tpu_clk> */
+       clocks = <&cpg CPG_MOD 2926>, <&cpg CPG_MOD 2927>, <&tpu_clk>;
+
+       ports {
+               rsnd_port: port {
+                       rsnd_endpoint: endpoint {
+                               remote-endpoint = <&da7212_endpoint>;
+
+                               dai-format = "i2s";
+                               bitclock-master = <&rsnd_endpoint>;
+                               frame-master = <&rsnd_endpoint>;
+
+                               /* Mutually exclusive with 'capture' */
+                               playback = <&ssi0>;
+                               /* [CAPTURE] */
+                               /* capture = <&ssi0>; */
+                       };
+               };
+       };
+};