1*e0d1619fSKuninori Morimoto// SPDX-License-Identifier: GPL-2.0 2*e0d1619fSKuninori Morimoto/* 3*e0d1619fSKuninori Morimoto * Device Tree Source for the White Hawk board with ARD-AUDIO-DA7212 Board 4*e0d1619fSKuninori Morimoto * 5*e0d1619fSKuninori Morimoto * You can find and buy "ARD-AUDIO-DA7212" at Digi-Key 6*e0d1619fSKuninori Morimoto * 7*e0d1619fSKuninori Morimoto * https://www.digikey.jp/en/products/detail/ARD-AUDIO-DA7212/1564-1021-ND/5456357 8*e0d1619fSKuninori Morimoto * 9*e0d1619fSKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp. 10*e0d1619fSKuninori Morimoto * 11*e0d1619fSKuninori Morimoto * 12*e0d1619fSKuninori Morimoto * [Connection] 13*e0d1619fSKuninori Morimoto * 14*e0d1619fSKuninori Morimoto * White Hawk ARD-AUDIO-DA7212 15*e0d1619fSKuninori Morimoto * +----------------------------+ 16*e0d1619fSKuninori Morimoto * |CPU board | 17*e0d1619fSKuninori Morimoto * | | 18*e0d1619fSKuninori Morimoto * |CN40 (IO PIN HEADER) | 19*e0d1619fSKuninori Morimoto * | AUDIO_CLKIN_V pin1 |<--\ +---------------+ 20*e0d1619fSKuninori Morimoto * |(*) GP1_25/SL_SW2_V pin2 |<--/ |J2 | 21*e0d1619fSKuninori Morimoto * | AUDIO_CLKOUT_V pin5 |<----->| pin7 MCLK | 22*e0d1619fSKuninori Morimoto * | SSI_SCK_V pin9 |<----->| pin1 BCLK | 23*e0d1619fSKuninori Morimoto * | SSI_WS_V pin13 |<----->| pin3 WCLK | 24*e0d1619fSKuninori Morimoto * | SSI_SD_V pin15 |<----->| pin5 DATIN | (@) 25*e0d1619fSKuninori Morimoto * | | \-->| pin15 DATOUT | [CAPTURE] 26*e0d1619fSKuninori Morimoto * +----------------------------+ +---------------+ 27*e0d1619fSKuninori Morimoto * +----------------------------+ 28*e0d1619fSKuninori Morimoto * |Breakout board | 29*e0d1619fSKuninori Morimoto * | | +---------------+ 30*e0d1619fSKuninori Morimoto * |CN34 (I2C CN) | |J1 | 31*e0d1619fSKuninori Morimoto * | I2C0_SCL pin3 |<----->| pin20 SCL | 32*e0d1619fSKuninori Morimoto * | I2C0_SDA pin5 |<----->| pin18 SDA | 33*e0d1619fSKuninori Morimoto * | | +---------------+ 34*e0d1619fSKuninori Morimoto * | | +-----------------------+ 35*e0d1619fSKuninori Morimoto * |CN4 (Power) | |J7 | 36*e0d1619fSKuninori Morimoto * | 3v3 (v) pin9 |<----->| pin4 / pin8 3.3v | 37*e0d1619fSKuninori Morimoto * | GND (v) pin3 / pin4 |<----->| pin12 / pin14 GND | 38*e0d1619fSKuninori Morimoto * +----------------------------+ +-----------------------+ 39*e0d1619fSKuninori Morimoto * (*) GP1_25/SL_SW2_V is used as TPU 40*e0d1619fSKuninori Morimoto * (@) Connect to pin5 (DATIN = playback) or pin15 (DATOUT = capture) 41*e0d1619fSKuninori Morimoto * (v) These are just sample pins. You can find many 3v3 / GND pins on 42*e0d1619fSKuninori Morimoto * White Hawk board, not only CN4. You can use other pins for it. 43*e0d1619fSKuninori Morimoto * 44*e0d1619fSKuninori Morimoto * [How to enable] 45*e0d1619fSKuninori Morimoto * 46*e0d1619fSKuninori Morimoto * You need these configs 47*e0d1619fSKuninori Morimoto * 48*e0d1619fSKuninori Morimoto * CONFIG_PWM 49*e0d1619fSKuninori Morimoto * CONFIG_PWM_RENESAS_TPU 50*e0d1619fSKuninori Morimoto * CONFIG_COMMON_CLK_PWM 51*e0d1619fSKuninori Morimoto * CONFIG_SND_SOC_DA7213 52*e0d1619fSKuninori Morimoto * 53*e0d1619fSKuninori Morimoto * [How to use] 54*e0d1619fSKuninori Morimoto * 55*e0d1619fSKuninori Morimoto * 44.1kHz groups sound is available by default. 56*e0d1619fSKuninori Morimoto * You need to update audio_clkin settings to switch to 48kHz groups sound. 57*e0d1619fSKuninori Morimoto * see 58*e0d1619fSKuninori Morimoto * [(C) clock] 59*e0d1619fSKuninori Morimoto * 60*e0d1619fSKuninori Morimoto * You can use capture if you change the settings 61*e0d1619fSKuninori Morimoto * see 62*e0d1619fSKuninori Morimoto * [CAPTURE] 63*e0d1619fSKuninori Morimoto * 64*e0d1619fSKuninori Morimoto * You need to setup Headphone 65*e0d1619fSKuninori Morimoto * 66*e0d1619fSKuninori Morimoto * > amixer set "Headphone" 40% 67*e0d1619fSKuninori Morimoto * > amixer set "Headphone" on 68*e0d1619fSKuninori Morimoto * > amixer set "Mixout Left DAC Left" on 69*e0d1619fSKuninori Morimoto * > amixer set "Mixout Right DAC Right" on 70*e0d1619fSKuninori Morimoto */ 71*e0d1619fSKuninori Morimoto 72*e0d1619fSKuninori Morimoto/dts-v1/; 73*e0d1619fSKuninori Morimoto/plugin/; 74*e0d1619fSKuninori Morimoto#include <dt-bindings/clock/r8a779g0-cpg-mssr.h> 75*e0d1619fSKuninori Morimoto 76*e0d1619fSKuninori Morimoto&{/} { 77*e0d1619fSKuninori Morimoto sound_card: sound { 78*e0d1619fSKuninori Morimoto compatible = "audio-graph-card"; 79*e0d1619fSKuninori Morimoto label = "rcar-sound"; 80*e0d1619fSKuninori Morimoto 81*e0d1619fSKuninori Morimoto dais = <&rsnd_port>; /* DA7212 Audio Codec */ 82*e0d1619fSKuninori Morimoto }; 83*e0d1619fSKuninori Morimoto 84*e0d1619fSKuninori Morimoto tpu_clk: tpu-clk { 85*e0d1619fSKuninori Morimoto compatible = "pwm-clock"; 86*e0d1619fSKuninori Morimoto #clock-cells = <0>; 87*e0d1619fSKuninori Morimoto 88*e0d1619fSKuninori Morimoto /* 44.1kHz groups [(C) clock] */ 89*e0d1619fSKuninori Morimoto clock-frequency = <11289600>; 90*e0d1619fSKuninori Morimoto pwms = <&tpu 0 88 0>; /* 1000000000 / 88 =~ 11289600 */ 91*e0d1619fSKuninori Morimoto 92*e0d1619fSKuninori Morimoto /* 48 kHz groups [(C) clock] */ 93*e0d1619fSKuninori Morimoto// clock-frequency = <12288000>; 94*e0d1619fSKuninori Morimoto// pwms = <&tpu 0 81 0>; /* 1000000000 / 81 =~ 12288000 */ 95*e0d1619fSKuninori Morimoto }; 96*e0d1619fSKuninori Morimoto 97*e0d1619fSKuninori Morimoto}; 98*e0d1619fSKuninori Morimoto 99*e0d1619fSKuninori Morimoto&pfc { 100*e0d1619fSKuninori Morimoto sound_pins: sound { 101*e0d1619fSKuninori Morimoto groups = "ssi_ctrl", "ssi_data"; 102*e0d1619fSKuninori Morimoto function = "ssi"; 103*e0d1619fSKuninori Morimoto }; 104*e0d1619fSKuninori Morimoto 105*e0d1619fSKuninori Morimoto sound_clk_pins: sound-clk { 106*e0d1619fSKuninori Morimoto groups = "audio_clkin", "audio_clkout"; 107*e0d1619fSKuninori Morimoto function = "audio_clk"; 108*e0d1619fSKuninori Morimoto }; 109*e0d1619fSKuninori Morimoto 110*e0d1619fSKuninori Morimoto tpu0_pins: tpu0 { 111*e0d1619fSKuninori Morimoto groups = "tpu_to0_a"; 112*e0d1619fSKuninori Morimoto function = "tpu"; 113*e0d1619fSKuninori Morimoto }; 114*e0d1619fSKuninori Morimoto}; 115*e0d1619fSKuninori Morimoto 116*e0d1619fSKuninori Morimoto&tpu { 117*e0d1619fSKuninori Morimoto pinctrl-0 = <&tpu0_pins>; 118*e0d1619fSKuninori Morimoto pinctrl-names = "default"; 119*e0d1619fSKuninori Morimoto 120*e0d1619fSKuninori Morimoto status = "okay"; 121*e0d1619fSKuninori Morimoto}; 122*e0d1619fSKuninori Morimoto 123*e0d1619fSKuninori Morimoto&i2c0 { 124*e0d1619fSKuninori Morimoto #address-cells = <1>; 125*e0d1619fSKuninori Morimoto #size-cells = <0>; 126*e0d1619fSKuninori Morimoto 127*e0d1619fSKuninori Morimoto codec@1a { 128*e0d1619fSKuninori Morimoto compatible = "dlg,da7212"; 129*e0d1619fSKuninori Morimoto 130*e0d1619fSKuninori Morimoto #sound-dai-cells = <0>; 131*e0d1619fSKuninori Morimoto reg = <0x1a>; 132*e0d1619fSKuninori Morimoto 133*e0d1619fSKuninori Morimoto clocks = <&rcar_sound>; 134*e0d1619fSKuninori Morimoto clock-names = "mclk"; 135*e0d1619fSKuninori Morimoto 136*e0d1619fSKuninori Morimoto dlg,micbias1-lvl = <2500>; 137*e0d1619fSKuninori Morimoto dlg,micbias2-lvl = <2500>; 138*e0d1619fSKuninori Morimoto dlg,dmic-data-sel = "lrise_rfall"; 139*e0d1619fSKuninori Morimoto dlg,dmic-samplephase = "between_clkedge"; 140*e0d1619fSKuninori Morimoto dlg,dmic-clkrate = <3000000>; 141*e0d1619fSKuninori Morimoto 142*e0d1619fSKuninori Morimoto VDDA-supply = <®_1p8v>; 143*e0d1619fSKuninori Morimoto VDDMIC-supply = <®_3p3v>; 144*e0d1619fSKuninori Morimoto VDDIO-supply = <®_3p3v>; 145*e0d1619fSKuninori Morimoto 146*e0d1619fSKuninori Morimoto port { 147*e0d1619fSKuninori Morimoto da7212_endpoint: endpoint { 148*e0d1619fSKuninori Morimoto remote-endpoint = <&rsnd_endpoint>; 149*e0d1619fSKuninori Morimoto }; 150*e0d1619fSKuninori Morimoto }; 151*e0d1619fSKuninori Morimoto }; 152*e0d1619fSKuninori Morimoto}; 153*e0d1619fSKuninori Morimoto 154*e0d1619fSKuninori Morimoto&rcar_sound { 155*e0d1619fSKuninori Morimoto pinctrl-0 = <&sound_clk_pins>, <&sound_pins>; 156*e0d1619fSKuninori Morimoto pinctrl-names = "default"; 157*e0d1619fSKuninori Morimoto 158*e0d1619fSKuninori Morimoto /* Single DAI */ 159*e0d1619fSKuninori Morimoto #sound-dai-cells = <0>; 160*e0d1619fSKuninori Morimoto 161*e0d1619fSKuninori Morimoto /* audio_clkout */ 162*e0d1619fSKuninori Morimoto #clock-cells = <0>; 163*e0d1619fSKuninori Morimoto clock-frequency = <5644800>; /* 44.1kHz groups [(C) clock] */ 164*e0d1619fSKuninori Morimoto// clock-frequency = <6144000>; /* 48 kHz groups [(C) clock] */ 165*e0d1619fSKuninori Morimoto 166*e0d1619fSKuninori Morimoto status = "okay"; 167*e0d1619fSKuninori Morimoto 168*e0d1619fSKuninori Morimoto /* Update <clkin> to <tpu_clk> */ 169*e0d1619fSKuninori Morimoto clocks = <&cpg CPG_MOD 2926>, <&cpg CPG_MOD 2927>, <&tpu_clk>; 170*e0d1619fSKuninori Morimoto 171*e0d1619fSKuninori Morimoto ports { 172*e0d1619fSKuninori Morimoto rsnd_port: port { 173*e0d1619fSKuninori Morimoto rsnd_endpoint: endpoint { 174*e0d1619fSKuninori Morimoto remote-endpoint = <&da7212_endpoint>; 175*e0d1619fSKuninori Morimoto 176*e0d1619fSKuninori Morimoto dai-format = "i2s"; 177*e0d1619fSKuninori Morimoto bitclock-master = <&rsnd_endpoint>; 178*e0d1619fSKuninori Morimoto frame-master = <&rsnd_endpoint>; 179*e0d1619fSKuninori Morimoto 180*e0d1619fSKuninori Morimoto /* Mutually exclusive with 'capture' */ 181*e0d1619fSKuninori Morimoto playback = <&ssi0>; 182*e0d1619fSKuninori Morimoto /* [CAPTURE] */ 183*e0d1619fSKuninori Morimoto /* capture = <&ssi0>; */ 184*e0d1619fSKuninori Morimoto }; 185*e0d1619fSKuninori Morimoto }; 186*e0d1619fSKuninori Morimoto }; 187*e0d1619fSKuninori Morimoto}; 188