From fd5c38840afb88f9630981eb3a9803ba2de35850 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Sat, 29 Jun 2024 14:59:36 +0800 Subject: [PATCH] ARM: dts: rockchip: Add rk3506g-test1-v10 audio board Depends on CONFIG_I2C_GPIO Signed-off-by: Sugar Zhang Signed-off-by: Jason Zhu Signed-off-by: Jianwei Zheng Signed-off-by: William Wu Change-Id: If90642c916012daf6079a452bf453b53f5ca5599 --- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/rk3506g-test1-v10-audio.dts | 511 ++++++++++++++++++ 2 files changed, 513 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/rk3506g-test1-v10-audio.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 3eec4d02c842..406c0d219e58 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -1229,7 +1229,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \ rk3506g-evb1-v10-sii9022-bt1120-to-hdmi.dtb \ rk3506g-evb1-v10-sii9022-rgb2hdmi.dtb \ rk3506g-iotest-v10.dtb \ - rk3506g-iotest-v10-pdm.dtb + rk3506g-iotest-v10-pdm.dtb \ + rk3506g-test1-v10-audio.dtb dtb-$(CONFIG_ARCH_S3C24XX) += \ s3c2416-smdk2416.dtb dtb-$(CONFIG_ARCH_S3C64XX) += \ diff --git a/arch/arm/boot/dts/rk3506g-test1-v10-audio.dts b/arch/arm/boot/dts/rk3506g-test1-v10-audio.dts new file mode 100644 index 000000000000..fe7a2d7adbaa --- /dev/null +++ b/arch/arm/boot/dts/rk3506g-test1-v10-audio.dts @@ -0,0 +1,511 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2024 Rockchip Electronics Co., Ltd. + */ + +/dts-v1/; + +#include "rk3506.dtsi" + +/ { + model = "Rockchip RK3506G TEST1 V10 Audio Board"; + compatible = "rockchip,rk3506g-test1-v10", "rockchip,rk3506"; + + chosen { + bootargs = "earlycon=uart8250,mmio32,0xff0a0000 console=ttyFIQ0 ubi.mtd=4 ubi.block=0,rootfs root=/dev/ubiblock0_0 rootfstype=squashfs rootwait snd_aloop.index=7 snd_aloop.use_raw_jiffies=1"; + }; + + acodec_sound: acodec-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "sai4-1r-adc"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <1024>; + simple-audio-card,bitclock-master = <&codec_master>; + simple-audio-card,frame-master = <&codec_master>; + simple-audio-card,cpu { + sound-dai = <&sai4>; + }; + codec_master: simple-audio-card,codec { + sound-dai = <&audio_codec>; + }; + }; + + dsm_sound: dsm-sound { + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "rockchip-dsm-sound"; + simple-audio-card,bitclock-master = <&dsm_master>; + simple-audio-card,frame-master = <&dsm_master>; + simple-audio-card,cpu { + sound-dai = <&sai3>; + }; + dsm_master: simple-audio-card,codec { + sound-dai = <&acdcdig_dsm>; + }; + }; + + fiq_debugger: fiq-debugger { + compatible = "rockchip,fiq-debugger"; + rockchip,serial-id = <0>; + rockchip,wake-irq = <0>; + rockchip,irq-mode-enable = <1>; + rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */ + interrupts = ; + }; + + gpio_i2c0: i2c@0 { + compatible = "i2c-gpio"; + gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>, /* sda */ + <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>; /* scl */ + i2c-gpio,delay-us = <2>; /* ~100 kHz */ + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&gpio_i2c0_pins>; + + es8388_6: es8388@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x11>; + clocks = <&mclkout_sai1>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai1>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-6"; + }; + + es8388_7: es8388@10 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x10>; + clocks = <&mclkout_sai1>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai1>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-7"; + }; + }; + + gpio_i2c1: i2c@1 { + compatible = "i2c-gpio"; + gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>, /* sda */ + <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>; /* scl */ + i2c-gpio,delay-us = <2>; /* ~100 kHz */ + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&gpio_i2c1_pins>; + + es8388_8: es8388@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x11>; + clocks = <&mclkout_sai2>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai2>; + assigned-clock-rates = <12288000>; + pinctrl-names = "default"; + pinctrl-0 = <&sai2m0_mclk_pins>; + sound-name-prefix = "ES8388-8"; + }; + + es8388_9: es8388@10 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x10>; + clocks = <&mclkout_sai3>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai3>; + assigned-clock-rates = <12288000>; + pinctrl-names = "default"; + pinctrl-0 = <&sai3_mclk_pins>; + sound-name-prefix = "ES8388-9"; + }; + }; + + /* SAI0 1TX + 4RX */ + sai0_es8388x4_sound: sai0-es8388x4-sound { + compatible = "rockchip,multicodecs-card"; + rockchip,card-name = "sai0-1t4r-es8388x4"; + rockchip,format = "i2s"; + rockchip,mclk-fs = <256>; + rockchip,cpu = <&sai0>; + rockchip,codec = <&es8388_0>, <&es8388_1>, + <&es8388_2>, <&es8388_3>; + rockchip,audio-routing = + "Speaker", "ES8388-0 LOUT1", + "Speaker", "ES8388-0 ROUT1", + "ES8388-0 LINPUT1", "Main Mic", /* From ES8388-4 */ + "ES8388-0 LINPUT2", "Main Mic", /* From ES8388-4 */ + "ES8388-1 LINPUT1", "Main Mic", /* From ES8388-5 */ + "ES8388-1 LINPUT2", "Main Mic", /* From ES8388-5 */ + "ES8388-2 LINPUT1", "Main Mic", /* From ES8388-6 */ + "ES8388-2 LINPUT2", "Main Mic", /* From ES8388-6 */ + "ES8388-3 LINPUT1", "Main Mic", /* From ES8388-7 */ + "ES8388-3 LINPUT2", "Main Mic"; /* From ES8388-7 */ + }; + + /* SAI1 4TX + 1RX */ + sai1_es8388x4_sound: sai1-es8388x4-sound { + compatible = "rockchip,multicodecs-card"; + rockchip,card-name = "sai1-4t1r-es8388x4"; + rockchip,format = "i2s"; + rockchip,mclk-fs = <256>; + rockchip,cpu = <&sai1>; + rockchip,codec = <&es8388_4>, <&es8388_5>, + <&es8388_6>, <&es8388_7>; + rockchip,audio-routing = + "Speaker", "ES8388-4 LOUT1", + "Speaker", "ES8388-4 ROUT1", + "Speaker", "ES8388-5 LOUT1", + "Speaker", "ES8388-5 ROUT1", + "Speaker", "ES8388-6 LOUT1", + "Speaker", "ES8388-6 ROUT1", + "Speaker", "ES8388-7 LOUT1", + "Speaker", "ES8388-7 ROUT1", + "ES8388-4 LINPUT1", "Main Mic", /* From ES8388-0 */ + "ES8388-4 LINPUT2", "Main Mic"; /* From ES8388-0 */ + }; + + /* SAI2 1TX + 1RX */ + sai2_es8388x1_sound: sai2-es8388x1-sound { + compatible = "rockchip,multicodecs-card"; + rockchip,card-name = "sai2-1t1r-es8388x1"; + rockchip,format = "i2s"; + rockchip,mclk-fs = <256>; + rockchip,cpu = <&sai2>; + rockchip,codec = <&es8388_8>; + rockchip,audio-routing = + "Speaker", "ES8388-8 LOUT1", + "Speaker", "ES8388-8 ROUT1", + "ES8388-8 LINPUT1", "Main Mic", /* From ES8388-8 */ + "ES8388-8 LINPUT2", "Main Mic"; /* From ES8388-8 */ + }; + + /* SAI3 1TX + 1RX */ + sai3_es8388x1_sound: sai3-es8388x1-sound { + compatible = "rockchip,multicodecs-card"; + rockchip,card-name = "sai3-1t1r-es8388x1"; + rockchip,format = "i2s"; + rockchip,mclk-fs = <256>; + rockchip,cpu = <&sai3>; + rockchip,codec = <&es8388_9>; + rockchip,audio-routing = + "Speaker", "ES8388-9 LOUT1", + "Speaker", "ES8388-9 ROUT1", + "ES8388-9 LINPUT1", "Main Mic", /* From ES8388-9 */ + "ES8388-9 LINPUT2", "Main Mic"; /* From ES8388-9 */ + }; + + spdif_rx_dc: spdif-rx-dc { + compatible = "rockchip,dummy-codec"; + #sound-dai-cells = <0>; + }; + + spdif_rx_sound: spdif-rx-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "spdif-rx-sound"; + simple-audio-card,cpu { + sound-dai = <&spdif_rx>; + }; + simple-audio-card,codec { + sound-dai = <&spdif_rx_dc>; + }; + }; + + spdif_tx_dc: spdif-tx-dc { + compatible = "rockchip,dummy-codec"; + #sound-dai-cells = <0>; + }; + + spdif_tx_sound: spdif-tx-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "spdif-tx-sound"; + simple-audio-card,mclk-fs = <128>; + simple-audio-card,cpu { + sound-dai = <&spdif_tx>; + }; + simple-audio-card,codec { + sound-dai = <&spdif_tx_dc>; + }; + }; + + vcc12v_dc: vcc12v-dc { + compatible = "regulator-fixed"; + regulator-name = "vcc12v_dc"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + }; + + vcc_sys: vcc-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vcc12v_dc>; + }; + + vcc_3v3: vcc-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_3v3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc_sys>; + }; + + vcc_1v8: vcc-1v8 { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc_sys>; + }; + + vdd_arm: vdd-arm { + compatible = "pwm-regulator"; + pwms = <&pwm0_4ch_0 0 5000 1>; + regulator-name = "vdd_arm"; + regulator-min-microvolt = <710000>; + regulator-max-microvolt = <1207000>; + regulator-init-microvolt = <1011000>; + regulator-always-on; + regulator-boot-on; + regulator-settling-time-up-us = <250>; + pwm-supply = <&vcc_sys>; + }; + + vcc5v0_otg0: vcc5v0-otg0-regulator { + compatible = "regulator-fixed"; + regulator-name = "vcc5v0_otg0"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + gpio = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&vcc5v0_otg0_en>; + }; +}; + +&acdcdig_dsm { + status = "disabled"; + pa-ctl-gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&dsm_audm1_ln_pins + &dsm_audm1_lp_pins + &dsm_spk_ctrl>; +}; + +&audio_codec { + status = "okay"; +}; + +&fspi { + status = "okay"; + + flash@0 { + compatible = "spi-nand"; + reg = <0>; + spi-max-frequency = <80000000>; + spi-rx-bus-width = <4>; + spi-tx-bus-width = <1>; + }; +}; + +&i2c0 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io18_i2c0_scl + &rm_io19_i2c0_sda>; + + es8388_0: es8388@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x11>; + clocks = <&mclkout_sai0>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai0>; + assigned-clock-rates = <12288000>; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io2_sai0_mclk>; + sound-name-prefix = "ES8388-0"; + }; + + es8388_1: es8388@10 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x10>; + clocks = <&mclkout_sai0>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai0>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-1"; + }; +}; + +&i2c1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io25_i2c1_scl + &rm_io26_i2c1_sda>; + + es8388_2: es8388@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x11>; + clocks = <&mclkout_sai0>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai0>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-2"; + }; + + es8388_3: es8388@10 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x10>; + clocks = <&mclkout_sai0>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai0>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-3"; + }; +}; + +&i2c2 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io30_i2c2_scl + &rm_io31_i2c2_sda>; + + es8388_4: es8388@11 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x11>; + clocks = <&mclkout_sai1>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai1>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-4"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io8_sai1_mclk>; + }; + + es8388_5: es8388@10 { + #sound-dai-cells = <0>; + compatible = "everest,es8388", "everest,es8323"; + reg = <0x10>; + clocks = <&mclkout_sai1>; + clock-names = "mclk"; + assigned-clocks = <&mclkout_sai1>; + assigned-clock-rates = <12288000>; + sound-name-prefix = "ES8388-5"; + }; +}; + +&pinctrl { + acodec-dsm { + /omit-if-no-ref/ + dsm_spk_ctrl: dsm-spk-ctrl { + rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + gpio-i2c { + /omit-if-no-ref/ + gpio_i2c0_pins: gpio-i2c0-pins { + rockchip,pins = + <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>, /* sda */ + <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; /* scl */ + }; + + /omit-if-no-ref/ + gpio_i2c1_pins: gpio-i2c1-pins { + rockchip,pins = + <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>, /* sda */ + <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; /* scl */ + }; + }; + + usb { + vcc5v0_otg0_en: vcc5v0-otg0-en { + rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&pwm0_4ch_0 { + pinctrl-names = "active"; + pinctrl-0 = <&rm_io21_pwm0_ch0>; + status = "okay"; +}; + +&sai0 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io0_sai0_lrck + &rm_io1_sai0_sclk + &rm_io3_sai0_sdo + &rm_io4_sai0_sdi0 + &rm_io5_sai0_sdi1 + &rm_io6_sai0_sdi2 + &rm_io7_sai0_sdi3>; +}; + +&sai1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io9_sai1_sclk + &rm_io10_sai1_lrck + &rm_io11_sai1_sdi + &rm_io12_sai1_sdo0 + &rm_io13_sai1_sdo1 + &rm_io14_sai1_sdo2 + &rm_io15_sai1_sdo3>; +}; + +&sai2 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&sai2m0_lrck_pins + &sai2m0_sclk_pins + &sai2m0_sdi_pins + &sai2m0_sdo_pins>; +}; + +&sai3 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&sai3_lrck_pins + &sai3_sclk_pins + &sai3_sdi_pins + &sai3_sdo_pins>; +}; + +&sai4 { + status = "okay"; +}; + +&spdif_rx { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io17_spdif_rx>; +}; + +&spdif_tx { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&rm_io16_spdif_tx>; +}; + +&usb20_otg0 { + status = "okay"; +};