From bc63f52c83816ea8fbdc2675dabbbe4ec1f2689f Mon Sep 17 00:00:00 2001 From: Le Qi Date: Thu, 2 Apr 2026 12:20:42 +0800 Subject: [PATCH 1/4] Revert "FROMLIST: arm64: dts: qcom: talos: Add GPR node, audio services, and MI2S1 TLMM pins" This reverts commit 392c660ca2c06d74fb5bcfce12566040fd7925c7. The patch is being updated to a newer version that includes mclk support to fix recording clipping. Signed-off-by: Le Qi --- arch/arm64/boot/dts/qcom/talos.dtsi | 47 ----------------------------- 1 file changed, 47 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom/talos.dtsi index b95e707128b12..41b69be2d7690 100644 --- a/arch/arm64/boot/dts/qcom/talos.dtsi +++ b/arch/arm64/boot/dts/qcom/talos.dtsi @@ -20,7 +20,6 @@ #include #include #include -#include / { interrupt-parent = <&intc>; @@ -1629,13 +1628,6 @@ #interrupt-cells = <2>; wakeup-parent = <&pdc>; - mi2s1_pins: mi2s1-state { - pins = "gpio108", "gpio109", "gpio110", "gpio111"; - function = "mi2s_1"; - drive-strength = <8>; - bias-disable; - }; - cam0_default: cam0-default-state { pins = "gpio28"; function = "cam_mclk"; @@ -5277,45 +5269,6 @@ dma-coherent; }; }; - - gpr: gpr { - compatible = "qcom,gpr"; - qcom,glink-channels = "adsp_apps"; - qcom,domain = ; - qcom,intents = <512 20>; - #address-cells = <1>; - #size-cells = <0>; - - q6apm: service@1 { - compatible = "qcom,q6apm"; - reg = ; - #sound-dai-cells = <0>; - qcom,protection-domain = "avs/audio", - "msm/adsp/audio_pd"; - - q6apmbedai: bedais { - compatible = "qcom,q6apm-lpass-dais"; - #sound-dai-cells = <1>; - }; - - q6apmdai: dais { - compatible = "qcom,q6apm-dais"; - iommus = <&apps_smmu 0x1721 0x0>; - }; - }; - - q6prm: service@2 { - compatible = "qcom,q6prm"; - reg = ; - qcom,protection-domain = "avs/audio", - "msm/adsp/audio_pd"; - - q6prmcc: clock-controller { - compatible = "qcom,q6prm-lpass-clocks"; - #clock-cells = <2>; - }; - }; - }; }; }; From 6b8d949079d68328315b50e68bffdef6899bf201 Mon Sep 17 00:00:00 2001 From: Le Qi Date: Thu, 2 Apr 2026 12:20:53 +0800 Subject: [PATCH 2/4] Revert "FROMLIST: arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec" This reverts commit 9b6d6100a71b2a98a30ada43d34edeb55a386236. The patch is being updated to a newer version that includes mclk support to fix recording clipping. Signed-off-by: Le Qi --- arch/arm64/boot/dts/qcom/talos-evk.dts | 52 -------------------------- 1 file changed, 52 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/talos-evk.dts b/arch/arm64/boot/dts/qcom/talos-evk.dts index 42f8a3944b29b..af100e22beeec 100644 --- a/arch/arm64/boot/dts/qcom/talos-evk.dts +++ b/arch/arm64/boot/dts/qcom/talos-evk.dts @@ -5,7 +5,6 @@ /dts-v1/; #include "talos-evk-som.dtsi" -#include / { model = "Qualcomm QCS615 IQ 615 EVK"; @@ -41,46 +40,6 @@ }; }; - sound { - compatible = "qcom,qcs615-sndcard"; - model = "TALOS-EVK"; - - pinctrl-0 = <&mi2s1_pins>; - pinctrl-names = "default"; - - pri-mi2s-capture-dai-link { - link-name = "Primary MI2S Capture"; - - codec { - sound-dai = <&codec_da7212>; - }; - - cpu { - sound-dai = <&q6apmbedai PRIMARY_MI2S_TX>; - }; - - platform { - sound-dai = <&q6apm>; - }; - }; - - pri-mi2s-playback-dai-link { - link-name = "Primary MI2S Playback"; - - codec { - sound-dai = <&codec_da7212>; - }; - - cpu { - sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>; - }; - - platform { - sound-dai = <&q6apm>; - }; - }; - }; - vreg_v1p8_out: regulator-v1p8-out { compatible = "regulator-fixed"; regulator-name = "vreg-v1p8-out"; @@ -150,17 +109,6 @@ }; }; -&i2c5 { - codec_da7212: codec@1a { - compatible = "dlg,da7212"; - reg = <0x1a>; - #sound-dai-cells = <0>; - VDDA-supply = <&vreg_v1p8_out>; - VDDIO-supply = <&vreg_v1p8_out>; - VDDMIC-supply = <&vreg_v3p3_out>; - }; -}; - &mdss_dsi0_out { remote-endpoint = <&adv7535_in>; data-lanes = <0 1 2 3>; From 0ca3f7dbe70f8d9b7038b2af2963ddfa0417db09 Mon Sep 17 00:00:00 2001 From: Le Qi Date: Thu, 2 Apr 2026 12:24:43 +0800 Subject: [PATCH 3/4] FROMLIST: arm64: dts: qcom: talos: Add GPR node, audio services, and MI2S1 TLMM pins This patch adds the Generic Pack Router (GPR) node together with Audio Process Manager (APM) and Proxy Resource Manager (PRM) audio service nodes to the Talos device tree description. It also introduces MI2S1 pinctrl states for data0, data1, sck, and ws lines, grouped into a single entry at the SoC-level DTSI for better reuse and clarity. Link: https://lore.kernel.org/all/20260409030156.155455-2-le.qi@oss.qualcomm.com/ Reviewed-by: Konrad Dybcio Signed-off-by: Le Qi --- arch/arm64/boot/dts/qcom/talos.dtsi | 54 +++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom/talos.dtsi index 41b69be2d7690..dcbacbde54a3d 100644 --- a/arch/arm64/boot/dts/qcom/talos.dtsi +++ b/arch/arm64/boot/dts/qcom/talos.dtsi @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -1672,6 +1673,20 @@ bias-pull-up; }; + mi2s1_pins: mi2s1-state { + pins = "gpio108", "gpio109", "gpio110", "gpio111"; + function = "mi2s_1"; + drive-strength = <8>; + bias-disable; + }; + + mi2s_mclk: mi2s-mclk-state { + pins = "gpio122"; + function = "mclk2"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs0: qspi-cs0-state { pins = "gpio44"; function = "qspi"; @@ -5269,6 +5284,45 @@ dma-coherent; }; }; + + gpr: gpr { + compatible = "qcom,gpr"; + qcom,glink-channels = "adsp_apps"; + qcom,domain = ; + qcom,intents = <512 20>; + #address-cells = <1>; + #size-cells = <0>; + + q6apm: service@1 { + compatible = "qcom,q6apm"; + reg = ; + #sound-dai-cells = <0>; + qcom,protection-domain = "avs/audio", + "msm/adsp/audio_pd"; + + q6apmbedai: bedais { + compatible = "qcom,q6apm-lpass-dais"; + #sound-dai-cells = <1>; + }; + + q6apmdai: dais { + compatible = "qcom,q6apm-dais"; + iommus = <&apps_smmu 0x1721 0x0>; + }; + }; + + q6prm: service@2 { + compatible = "qcom,q6prm"; + reg = ; + qcom,protection-domain = "avs/audio", + "msm/adsp/audio_pd"; + + q6prmcc: clock-controller { + compatible = "qcom,q6prm-lpass-clocks"; + #clock-cells = <2>; + }; + }; + }; }; }; From f288717194731b0b1809afdf2361ccd55fb0857d Mon Sep 17 00:00:00 2001 From: Le Qi Date: Thu, 2 Apr 2026 12:28:32 +0800 Subject: [PATCH 4/4] FROMLIST: arm64: dts: qcom: talos-evk: Add sound card support with DA7212 codec Add the sound card node for QCS615 Talos EVK with DA7212 codec connected over the Primary MI2S interface. The configuration enables headphone playback and headset microphone capture, both of which have been tested to work. Link: https://lore.kernel.org/all/20260409030156.155455-3-le.qi@oss.qualcomm.com/ Reviewed-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio Signed-off-by: Le Qi --- arch/arm64/boot/dts/qcom/talos-evk.dts | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/talos-evk.dts b/arch/arm64/boot/dts/qcom/talos-evk.dts index af100e22beeec..b7f514fbc7b2d 100644 --- a/arch/arm64/boot/dts/qcom/talos-evk.dts +++ b/arch/arm64/boot/dts/qcom/talos-evk.dts @@ -5,6 +5,7 @@ /dts-v1/; #include "talos-evk-som.dtsi" +#include / { model = "Qualcomm QCS615 IQ 615 EVK"; @@ -40,6 +41,46 @@ }; }; + sound { + compatible = "qcom,qcs615-sndcard"; + model = "TALOS-EVK"; + + pinctrl-0 = <&mi2s1_pins>, <&mi2s_mclk>; + pinctrl-names = "default"; + + pri-mi2s-capture-dai-link { + link-name = "Primary MI2S Capture"; + + codec { + sound-dai = <&codec_da7212>; + }; + + cpu { + sound-dai = <&q6apmbedai PRIMARY_MI2S_TX>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + pri-mi2s-playback-dai-link { + link-name = "Primary MI2S Playback"; + + codec { + sound-dai = <&codec_da7212>; + }; + + cpu { + sound-dai = <&q6apmbedai PRIMARY_MI2S_RX>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + }; + vreg_v1p8_out: regulator-v1p8-out { compatible = "regulator-fixed"; regulator-name = "vreg-v1p8-out"; @@ -109,6 +150,21 @@ }; }; +&i2c5 { + status = "okay"; + + codec_da7212: codec@1a { + compatible = "dlg,da7212"; + reg = <0x1a>; + #sound-dai-cells = <0>; + clocks = <&q6prmcc LPASS_CLK_ID_MCLK_2 LPASS_CLK_ATTRIBUTE_COUPLE_NO>; + clock-names = "mclk"; + VDDA-supply = <&vreg_v1p8_out>; + VDDIO-supply = <&vreg_v1p8_out>; + VDDMIC-supply = <&vreg_v3p3_out>; + }; +}; + &mdss_dsi0_out { remote-endpoint = <&adv7535_in>; data-lanes = <0 1 2 3>;