arm64: dts: rockchip: add analog audio to RK3588 EVB1
authorSebastian Reichel <sebastian.reichel@collabora.com>
Thu, 9 Nov 2023 18:44:44 +0000 (19:44 +0100)
committerHeiko Stuebner <heiko@sntech.de>
Thu, 16 Nov 2023 20:15:02 +0000 (21:15 +0100)
Add support for the EVB1 analog audio to its devicetree. Only
the headphone has been tested, since I don't have matching
peripherals to test headset or speakers.

I also didn't manage to record sound from the onboard microphone,
but that also fails with the vendor kernel. Thus I assume the
microphone on my board is fried.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20231109184453.108676-2-sebastian.reichel@collabora.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts

index b9d789d57862c2def973671cb4de41ea91b0bba5..3369065f897d4c27e304ae25ae13a3dd441ce7ea 100644 (file)
                };
        };
 
+       analog-sound {
+               compatible = "simple-audio-card";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_detect>;
+               simple-audio-card,name = "RK3588 EVB1 Audio";
+               simple-audio-card,aux-devs = <&amp_headphone>, <&amp_speaker>;
+               simple-audio-card,bitclock-master = <&masterdai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&masterdai>;
+               simple-audio-card,hp-det-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,pin-switches = "Headphones", "Speaker";
+               simple-audio-card,routing =
+                       "Speaker Amplifier INL", "LOUT2",
+                       "Speaker Amplifier INR", "ROUT2",
+                       "Speaker", "Speaker Amplifier OUTL",
+                       "Speaker", "Speaker Amplifier OUTR",
+                       "Headphones Amplifier INL", "LOUT1",
+                       "Headphones Amplifier INR", "ROUT1",
+                       "Headphones", "Headphones Amplifier OUTL",
+                       "Headphones", "Headphones Amplifier OUTR",
+                       "LINPUT1", "Onboard Microphone",
+                       "RINPUT1", "Onboard Microphone",
+                       "LINPUT2", "Microphone Jack",
+                       "RINPUT2", "Microphone Jack";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Microphone", "Onboard Microphone",
+                       "Headphone", "Headphones",
+                       "Speaker", "Speaker";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s0_8ch>;
+               };
+
+               masterdai: simple-audio-card,codec {
+                       sound-dai = <&es8388>;
+                       system-clock-frequency = <12288000>;
+               };
+       };
+
+       amp_headphone: headphone-amplifier {
+               compatible = "simple-audio-amplifier";
+               enable-gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&headphone_amplifier_en>;
+               sound-name-prefix = "Headphones Amplifier";
+       };
+
+       amp_speaker: speaker-amplifier {
+               compatible = "simple-audio-amplifier";
+               enable-gpios = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&speaker_amplifier_en>;
+               sound-name-prefix = "Speaker Amplifier";
+       };
+
        backlight: backlight {
                compatible = "pwm-backlight";
                power-supply = <&vcc12v_dcin>;
        };
 };
 
+&i2c7 {
+       status = "okay";
+
+       es8388: audio-codec@11 {
+               compatible = "everest,es8388";
+               reg = <0x11>;
+               clocks = <&cru I2S0_8CH_MCLKOUT>;
+               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               AVDD-supply = <&avcc_1v8_codec_s0>;
+               DVDD-supply = <&avcc_1v8_codec_s0>;
+               HPVDD-supply = <&vcc_3v3_s0>;
+               PVDD-supply = <&vcc_3v3_s0>;
+               #sound-dai-cells = <0>;
+       };
+};
+
+&i2s0_8ch {
+       pinctrl-0 = <&i2s0_lrck
+                    &i2s0_mclk
+                    &i2s0_sclk
+                    &i2s0_sdi0
+                    &i2s0_sdo0>;
+       status = "okay";
+};
+
 &mdio0 {
        rgmii_phy: ethernet-phy@1 {
                /* RTL8211F */
 };
 
 &pinctrl {
+       audio {
+               hp_detect: headphone-detect {
+                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               headphone_amplifier_en: headphone-amplifier-en {
+                       rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               speaker_amplifier_en: speaker-amplifier-en {
+                       rockchip,pins = <1 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        rtl8111 {
                rtl8111_isolate: rtl8111-isolate {
                        rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;