// 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 = <®_1p8v>; VDDMIC-supply = <®_3p3v>; VDDIO-supply = <®_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>; */ }; }; }; };