From nobody Tue Apr 7 02:36:12 2026 Received: from mail-m49226.qiye.163.com (mail-m49226.qiye.163.com [45.254.49.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A3E1188596; Tue, 17 Mar 2026 08:36:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773736595; cv=none; b=OYX52/RfsRE/YPLw0H7iwTgpqWrxWDQG81/NHGG1k4hiXN2M2FssectGpc1UxID5/g5gnZIwzcHtQcSviFiy5Vu4352+U6wyosveF5KKp6JgopBQLU4ENFg2UcvTHz6kuAMafCzUN9onIhbFbygWTviu2ZX6aLvC7TwFX/N/5UA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773736595; c=relaxed/simple; bh=baQNeXBE7npKcDlGStryNc13Z0dROADUrGzSelzrQT4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kNtOnRE18+C720SwmZqPMDeGj7ILS+0Q3xWJxU55iQi3TyWiHkVCA7GUUapYOe6rNrCYFcpz6lIqxfSTA/vQtHTa2axSdbgeX5AwdoIY0PL9aMRtZur4eLYvs9XMtKSREJo/d+zdZwY/sb4fQA+aGym3nOMAMV9/vp3B+5hm8go= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=thundersoft.com; spf=pass smtp.mailfrom=thundersoft.com; dkim=pass (1024-bit key) header.d=thundersoft.com header.i=@thundersoft.com header.b=jS3av/tC; arc=none smtp.client-ip=45.254.49.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=thundersoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thundersoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=thundersoft.com header.i=@thundersoft.com header.b="jS3av/tC" Received: from [127.0.1.1] (unknown [36.129.139.90]) by smtp.qiye.163.com (Hmail) with ESMTP id 373e3b4b7; Tue, 17 Mar 2026 16:36:22 +0800 (GMT+08:00) From: Hongyang Zhao Date: Tue, 17 Mar 2026 16:35:45 +0800 Subject: [PATCH v2 6/6] arm64: dts: qcom: qcs6490-rubikpi3: Add audio support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rubikpi-next-20260304-v2-6-5634fabe0c43@thundersoft.com> References: <20260317-rubikpi-next-20260304-v2-0-5634fabe0c43@thundersoft.com> In-Reply-To: <20260317-rubikpi-next-20260304-v2-0-5634fabe0c43@thundersoft.com> To: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Drake , Katsuhiro Suzuki , Matteo Martelli , Binbin Zhou , Jaroslav Kysela , Takashi Iwai , Srinivas Kandagatla , Bjorn Andersson , Konrad Dybcio Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Roger Shimizu , Neil Armstrong , Hongyang Zhao X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773736570; l=6173; i=hongyang.zhao@thundersoft.com; s=20260127; h=from:subject:message-id; bh=baQNeXBE7npKcDlGStryNc13Z0dROADUrGzSelzrQT4=; b=IujKd+wE/AnfU/oXPX0Qb+AkRVIlAjg55tBv+clUjSX0BAKgXm9IRE5WJZu6K2R9TFTf1wc1l oH9os5SwZ56AcsDNXaRBhFSLeSRZsazPCPM3yO1dpYxqXd6yMJafAor X-Developer-Key: i=hongyang.zhao@thundersoft.com; a=ed25519; pk=D9yL5W9Zj0lPBDAq9gzY++1849VlXuTWAkROzZ88J/4= X-HM-Tid: 0a9cfaf05dcf09d5kunm8391965e39c9fd X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVkZQkxIVk9MSUlJTBkfTEtJGVYVFAkWGhdVEwETFh oSFyQUDg9ZV1kYEgtZQVlITVVKSUJVSkhCVUJLWVdZFhoPEhUdFFlBWU9LSFVKS0lPT09IVUpLS1 VKQktLWQY+ DKIM-Signature: a=rsa-sha256; b=jS3av/tCvh3Ssnp4GnbVhGGjCirZupfTYy+AhJdKW4xFPrrY6FDVVcqVIPtX5QlZ4/Ntoz5dm+Npb5VJozE4y0RdhUCZjU/tx6S1c7rcyFkO1SKL4MWu8M1vLNMz+/uT+u3rgZhDq6/wJJ2SMIc3gYBrcn/CWINptSfGvWXhwSU=; c=relaxed/relaxed; s=default; d=thundersoft.com; v=1; bh=KJyt/o2RLmptR4AhuSOo/qFkP0iWcCxeErwly/5Q4II=; h=date:mime-version:subject:message-id:from; Add audio support for the Thundercomm RubikPi3 board: - Enable AudioReach via qcs6490-audioreach.dtsi - Add ES8316 codec on I2C0 with MCLK from LPASS PRM and jack detection - Add fixed 3.3V regulator for ES8316 power supply - Add MI2S playback/capture dai-links for ES8316 - Add HDMI audio via LT9611 bridge on quaternary MI2S - Add SPDIF TX/RX on tertiary MI2S exposed at the board 40=E2=80=91pin head= er - Add LPASS pin configurations for quaternary MI2S and LPI I2S1 Signed-off-by: Hongyang Zhao --- .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 191 +++++++++++++++++= ++++ 1 file changed, 191 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/ar= ch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts index 0b64a0b91202..6831a576fefb 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts @@ -19,6 +19,7 @@ #include "pm7325.dtsi" #include "pm8350c.dtsi" /* PM7350C */ #include "pmk8350.dtsi" /* PMK7325 */ +#include "qcs6490-audioreach.dtsi" =20 /delete-node/ &adsp_mem; /delete-node/ &cdsp_mem; @@ -128,6 +129,23 @@ fan0: pwm-fan { pinctrl-names =3D "default"; }; =20 + vreg_es8316_3v3: vreg-es8316-3v3 { + compatible =3D "regulator-fixed"; + + regulator-name =3D "vreg_es8316_3v3"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + + gpio =3D <&tlmm 117 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&es8316_power_on>; + pinctrl-names =3D "default"; + + regulator-always-on; + regulator-boot-on; + }; + vreg_eth_1v8: regulator-eth-1v8 { compatible =3D "regulator-fixed"; =20 @@ -364,6 +382,16 @@ usb1_sbu_mux: endpoint { }; }; }; + + spdif_rx: spdif-rx { + compatible =3D "linux,spdif-dir"; + #sound-dai-cells =3D <0>; + }; + + spdif_tx: spdif-tx { + compatible =3D "linux,spdif-dit"; + #sound-dai-cells =3D <0>; + }; }; =20 &apps_rsc { @@ -727,6 +755,23 @@ &gpu_zap_shader { firmware-name =3D "qcom/qcs6490/a660_zap.mbn"; }; =20 +&i2c0 { + status =3D "okay"; + + es8316: audio-codec@11 { + compatible =3D "everest,es8316"; + reg =3D <0x11>; + #sound-dai-cells =3D <0>; + + clocks =3D <&q6prmcc LPASS_CLK_ID_MCLK_1 LPASS_CLK_ATTRIBUTE_COUPLE_NO>; + clock-names =3D "mclk"; + + interrupts-extended =3D <&tlmm 63 IRQ_TYPE_EDGE_BOTH>; + + everest,jack-detect-inverted; + }; +}; + /* Pin 3, 5 in 40-pin connector */ &i2c1 { status =3D "okay"; @@ -740,6 +785,7 @@ &i2c9 { lt9611_codec: hdmi-bridge@39 { compatible =3D "lontium,lt9611"; reg =3D <0x39>; + #sound-dai-cells =3D <1>; =20 interrupts-extended =3D <&tlmm 20 IRQ_TYPE_EDGE_FALLING>; reset-gpios =3D <&tlmm 21 GPIO_ACTIVE_HIGH>; @@ -970,6 +1016,15 @@ &pon_resin { status =3D "okay"; }; =20 +&q6apmbedai { + pinctrl-0 =3D <&mi2s0_data0>, <&mi2s0_data1>, <&mi2s0_mclk>, + <&mi2s0_sclk>, <&mi2s0_ws>, + <&lpass_qua_mi2s_sclk>, <&lpass_qua_mi2s_ws>, <&lpass_qua_mi2s_data>, + <&lpass_lpi_i2s1_clk>, <&lpass_lpi_i2s1_ws>, + <&lpass_lpi_i2s1_data0>, <&lpass_lpi_i2s1_data1>; + pinctrl-names =3D "default"; +}; + &qupv3_id_0 { firmware-name =3D "qcom/qcm6490/qupv3fw.elf"; =20 @@ -1006,6 +1061,91 @@ &sdhc_2 { status =3D "okay"; }; =20 +&sound { + compatible =3D "qcom,qcs6490-rb3gen2-sndcard"; + model =3D "QCS6490-Thundercomm-RubikPi3"; + + mi2s-playback-dai-link { + link-name =3D "MI2S-LPAIF-RX-PRIMARY"; + + codec { + sound-dai =3D <&es8316>; + }; + + cpu { + sound-dai =3D <&q6apmbedai PRIMARY_MI2S_RX>; + }; + + platform { + sound-dai =3D <&q6apm>; + }; + }; + + mi2s-capture-dai-link { + link-name =3D "MI2S-LPAIF-TX-PRIMARY"; + + codec { + sound-dai =3D <&es8316>; + }; + + cpu { + sound-dai =3D <&q6apmbedai PRIMARY_MI2S_TX>; + }; + + platform { + sound-dai =3D <&q6apm>; + }; + }; + + quaternary-mi2s-playback-dai-link { + link-name =3D "MI2S-LPAIF_RXTX-RX-PRIMARY"; + + codec { + sound-dai =3D <<9611_codec 0>; + }; + + cpu { + sound-dai =3D <&q6apmbedai QUATERNARY_MI2S_RX>; + }; + + platform { + sound-dai =3D <&q6apm>; + }; + }; + + tert-mi2s-playback-dai-link { + link-name =3D "MI2S-LPAIF-RX-TERTIARY"; + + codec { + sound-dai =3D <&spdif_tx>; + }; + + cpu { + sound-dai =3D <&q6apmbedai TERTIARY_MI2S_RX>; + }; + + platform { + sound-dai =3D <&q6apm>; + }; + }; + + tert-mi2s-capture-dai-link { + link-name =3D "MI2S-LPAIF-TX-TERTIARY"; + + codec { + sound-dai =3D <&spdif_rx>; + }; + + cpu { + sound-dai =3D <&q6apmbedai TERTIARY_MI2S_TX>; + }; + + platform { + sound-dai =3D <&q6apm>; + }; + }; +}; + /* Pin 19, 21, 23, 24 in 40-pin connector */ &spi12 { status =3D "okay"; @@ -1220,6 +1360,50 @@ &sdc2_data { drive-strength =3D <10>; }; =20 +&lpass_tlmm { + lpass_qua_mi2s_sclk: qua-mi2s-sclk-state { + pins =3D "gpio0"; + function =3D "qua_mi2s_sclk"; + drive-strength =3D <8>; + bias-disable; + output-high; + }; + + lpass_qua_mi2s_ws: qua-mi2s-ws-state { + pins =3D "gpio1"; + function =3D "qua_mi2s_ws"; + drive-strength =3D <8>; + output-high; + }; + + lpass_qua_mi2s_data: qua-mi2s-data-state { + pins =3D "gpio2", "gpio3", "gpio4"; + function =3D "qua_mi2s_data"; + drive-strength =3D <8>; + bias-disable; + }; + + lpass_lpi_i2s1_clk: lpi-i2s1-clk-state { + pins =3D "gpio6"; + function =3D "i2s1_clk"; + }; + + lpass_lpi_i2s1_ws: lpi-i2s1-ws-state { + pins =3D "gpio7"; + function =3D "i2s1_ws"; + }; + + lpass_lpi_i2s1_data0: lpi-i2s1-data0-state { + pins =3D "gpio8"; + function =3D "i2s1_data"; + }; + + lpass_lpi_i2s1_data1: lpi-i2s1-data1-state { + pins =3D "gpio9"; + function =3D "i2s1_data"; + }; +}; + &tlmm { pcie1_reset_n: pcie1-reset-n-state { pins =3D "gpio2"; @@ -1387,6 +1571,13 @@ pcie0_wake_n: pcie0-wake-n-state { bias-pull-up; }; =20 + es8316_power_on: es8316-power-on-state { + pins =3D "gpio117"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-down; + }; + wifi_power_on: wifi-power-on-state { pins =3D "gpio125"; function =3D "gpio"; --=20 2.43.0